我想在进度条结束后更改活动。意味着进度条线结束。我在线程后添加activity2
。但是activity2
在应用程序运行时启动。为什么会这样?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar) findViewById(R.id.progressBar1);
new Thread(new Runnable() {
public void run() {
while (progressStatus < 100) {
progressStatus += 1;
handler.post(new Runnable() {
public void run() {
progressBar.setProgress(progressStatus);
}
});
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
Intent myIntent = new Intent(getApplicationContext(), activity2.class);
myIntent.putExtra("key", "......"); //Optional parameters
startActivity(myIntent);
答案 0 :(得分:1)
您已经创建了一个新线程,负责进度条,而在主线程上执行新的活动代码。您需要在同一个线程中放置开始活动代码。
你能做的是:
new Thread(new Runnable() {
public void run() {
while (progressStatus <= 100) {
progressStatus += 1;
handler.post(new Runnable() {
public void run() {
progressBar.setProgress(progressStatus);
}
});
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Intent myIntent = new Intent(getApplicationContext(), activity2.class);
myIntent.putExtra("key", "......"); //Optional parameters
startActivity(myIntent);
}
}).start();
答案 1 :(得分:0)
这是因为您在新线程中启动进度条,而intent的开始位于另一个线程中。启动intent的线程不会等待进度条完成,因为它们是异步的。你可以通过在while循环完成后在runnable中启动intent来解决这个问题。