为什么在后台线程中更新 ProgressBar 不会抛出 CalledFromWrongThreadException
Why updating ProgressBar in background thread doesn't throw CalledFromWrongThreadException
我正在尝试复习 Handler 的概念。所以我只是创建一个线程来更新 ProgressBar 并查看它是否会抛出异常。
这是我的代码
@Override
public void onResume() {
super.onResume();
new Thread(){
@Override
public void run() {
super.run();
while (progressBar.getProgress() <100){
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
progressBar.setProgress(pb.getProgress()+10);
}
}
}.start();
}
我的问题很简单。为什么它不抛出任何 CalledFromWrongThreadException?
如果是这样的话,我们处理进度更新的时候是不是应该忘记Handler?
运气不好--ProgressBar
特别支持从另一个线程更新其进度。这就是它不抛出东西的原因。
但是因为正是这个操作有这个额外的支持,所以第二个问题没有。通常,您不会停止使用处理程序。对于某些情况,例如,您需要在更新进度时做另一件小事 UI。
我正在尝试复习 Handler 的概念。所以我只是创建一个线程来更新 ProgressBar 并查看它是否会抛出异常。
这是我的代码
@Override
public void onResume() {
super.onResume();
new Thread(){
@Override
public void run() {
super.run();
while (progressBar.getProgress() <100){
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
progressBar.setProgress(pb.getProgress()+10);
}
}
}.start();
}
我的问题很简单。为什么它不抛出任何 CalledFromWrongThreadException? 如果是这样的话,我们处理进度更新的时候是不是应该忘记Handler?
运气不好--ProgressBar
特别支持从另一个线程更新其进度。这就是它不抛出东西的原因。
但是因为正是这个操作有这个额外的支持,所以第二个问题没有。通常,您不会停止使用处理程序。对于某些情况,例如,您需要在更新进度时做另一件小事 UI。