初学Android,请教handler.removeCallbacks的问题
代码:
//声明一个Handler对象
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
progressBar.setProgress(msg.arg1);
handler.post(updateThread);//立即执行updateThread线程进入run()方法
}
};
//匿名内部类方式定义一个线程
private Runnable updateThread = new Runnable(){
int i = 0;
@Override
public void run() {
System.out.println("UpdateThread");
i+=10;
//progressBar.setProgress(i);//设置当前进度条位置
//progressBar.setSecondaryProgress(i+10);//设置当前第二进度条位置
//得到消息对象,Message类由Android操作系统提供
Message msg = handler.obtainMessage();
msg.arg1 = i;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//将消息压入消息队列,handlerMessage(Message msg)方法被异步调用
handler.sendMessage(msg);
if(i==100){
i=80;//这里重新给i赋值后(i<90)线程就不会终止,为什么? //progressBar.setVisibility(View.GONE);//隐藏进度条
handler.removeCallbacks(updateThread);//从队列中移除updateThread线程
}
//延迟1秒将updateThread线程加入线程队列去执行一次updateThread线程
//handler.postDelayed(updateThread, 1000);
}
};