当前位置: 首页 > 知识库问答 >
问题:

第二次调用活动时不会停止加载进度条

林烨烨
2023-03-14

我已经创建了一个欢迎页面(启动器),并包含了一个进度条。加载此进度条后将显示下一个活动(几秒钟)。第一次,当应用程序运行时,几秒钟后将显示下一个活动。现在,当我按下后退按钮时,将显示欢迎活动。但这一次,几秒钟后,它现在像第一次一样调用下一个活动(使用Intent)。如何解决此问题?代码为:

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ProgressBar;

public class WelcomeActivity extends AppCompatActivity {
    ProgressBar p;
    private boolean mbActive;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);
        p = (ProgressBar) findViewById(R.id.progressBar);
        final Thread timerThread = new Thread() {
            @Override
            public void run() {
                mbActive = true;
                try {
                    int waited = 0;
                    while(mbActive && (waited < 1000)) {
                        sleep(200);
                        if(mbActive) {
                            waited += 200;
                            updateProgress(waited);
                        }
                    }
                } catch(InterruptedException e) {
                } finally {
                    onContinue();
                }
            }
        };
        timerThread.start();

    }
    @Override
    public void onDestroy() {
        super.onDestroy();
    }
    public void updateProgress(final int timePassed) {
        if(null != p) {
            final int progress = p.getMax() * timePassed / 100;
            p.setProgress(progress);
        }
    }

    public void onContinue() {
        Intent intd=new Intent(this,MainActivity.class);
        startActivity(intd);
    }


}

共有3个答案

濮书
2023-03-14

关闭进度对话框

public void onContinue() 
{
p.dismiss();
Intent intd=new Intent(this,MainActivity.class);
startActivity(intd);
}
马梓
2023-03-14

您应该使用setVisibility(View.GONE)/设置可见性(视图。不可见)。

public void onContinue() 
    {
    p.setVisibility(View.GONE);
    Intent intd=new Intent(this,MainActivity.class);
    startActivity(intd);
    }

供参考

如果试图从UI线程外部向UI线程发送UI事件,则CalledFromErrorThreadException是一个常见错误。

为了你的车祸。读取RunUnuithRead

姜宏放
2023-03-14

试试这个:----我在简历中保留进度显示代码时更改代码

 public class WelcomeActivity extends AppCompatActivity {

    ProgressBar p;
    private boolean mbActive;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_welcome);
    }

    public void updateProgress(final int timePassed) {
      if (null != p) {
        final int progress = p.getMax() * timePassed / 100;
        p.setProgress(progress);
      }
    }

    public void onContinue() {
      Intent intd = new Intent(this, MainActivity.class);
      startActivity(intd);
    }

    @Override
    protected void onResume() {
      super.onResume();
      showProgress();
    }

    private void showProgress() {
      p = (ProgressBar) findViewById(R.id.progressBar);
      final Thread timerThread = new Thread() {
        @Override
        public void run() {
          mbActive = true;
          try {
            int waited = 0;
            while (mbActive && (waited < 1000)) {
              sleep(200);
              if (mbActive) {
                waited += 200;
                updateProgress(waited);
              }
            }
          } catch (InterruptedException e) {
          } finally {
            onContinue();
          }
        }
      };
      timerThread.start();
    }

    @Override
    public void onDestroy() {
      super.onDestroy();
    }
  }
 类似资料:
  • 我正在生成一个文本文件,稍后由外部程序处理。这必须执行1000次,为此,我使用一个子流程。在循环中为我要处理的每个文本文件调用()。 工作正常。 第二次调用失败,python程序以退出。 -没有调试输出。-两者都保持停止状态,但在进程列表中 我尝试了,结果是一样的。我试图用与第一次执行相同的文本文件运行它,但它也失败了,所以罪魁祸首肯定是函数。 这是调用外部程序的行 该程序是一个简单的二进制文件,

  • 当应用程序处于活动状态时,所有操作都正常运行,但当没有任何活动运行时,我仍然通过firebase notification获得一个带有app_name和Body的通知,并打开MainActivity。 这是我的MyFirebaseMessagingService类:- 我看到了一个类似的问题,但对我的情况没有帮助。

  • 问题内容: 我正在尝试使用Linux下的ProcessBuilder类将mp3文件解码为wav文件。由于某些原因,该过程不会停止,因此我必须手动取消它。 有人可以给我一个提示。我认为引用的代码很容易重现: jstack的输出 问题答案: 您需要清空进程的输出(通过)和错误(通过)流,否则可能会阻塞。 引用过程文档: 由于某些本机平台仅为标准输入和输出流提供有限的缓冲区大小,因此未能及时写入子流程的

  • 我正在使用netty编写一个网络游戏服务器,并打算使用keep alive来提高性能<如果我为boss和worker executor使用CachedThreadPool,那么服务器对于保持活动和非保持活动连接都可以正常工作<但是如果我使用FixedThreadPool(1),一个用于boss,一个用于worker,第一个响应会发送给客户端,但如果浏览器使用该连接发送第二个请求,它将被阻止并在服务

  • 有时,当我在Chrome中调试一些javascript时,我暂停了javascript,如果我试图重新加载页面,Chrome只是“继续”调试器,步进下一个断点。 似乎没有任何办法迫使javascript完全停止运行,让chrome重新加载页面。每次按-r或单击reload按钮都只需继续到下一个断点。 null 附言。我还注意到javascript调试器也没有“停止”按钮。我如何告诉chrome停止

  • 我尝试做什么: 我希望HashSet中充满程序不知道的新词。用户按下主机上的“转换”按钮。带有单词的文件的路径在主框架上给出。 如果单词是新单词,则会打开一个J对话框并要求插入新单词(因此您可以更改拼写,例如第一个字母大…)。 如果用户按下JDialog上的“写入”按钮,该单词将添加到HashSet中。 但是如果我在那之后打印我的HashSet,则只显示“旧”值。当我第二次按下主框架上的“转换”按