我有一个帖子:
handlerStoper.post(new Runnable() {
@Override
public void run() {
startTime.setText(""+count);
startTime.invalidate();
count++;
handlerStoper.postDelayed(this, 1000);
}
});
如何在其他地方停止此线程?
答案 0 :(得分:4)
从您必须调用的处理程序中删除所有回调:
handlerStoper.removeCallbacks(null);
使用参数null
将删除所有Runnable。如果要删除特定的可运行文件,则必须提供要删除的Runnable实例作为参数。
public final void removeCallbacks (Runnable r)
在API级别1中添加
删除邮件队列中的Runnable r的所有待处理帖子。
http://developer.android.com/reference/android/os/Handler.html#removeCallbacks(java.lang.Runnable)
答案 1 :(得分:1)
public void run() {
startTime.setText(""+count);
startTime.invalidate();
count++;
if(flag){
handlerStoper.postDelayed(this, 1000);
}
}
如果要停止线程,请将标志值设置为false。
答案 2 :(得分:1)
Handler mhandler = new Handler();
Runnable r = new Runnable(){
@Override
public void run() {
startTime.setText(""+count);
startTime.invalidate();
count++;
mhandler.postDelayed(r, 1000);
}
});
//停止线程写入时
mhandler.removeCallbacks(R);
答案 3 :(得分:0)
public final void removeCallbacks (Runnable r)
在API级别1中添加
删除邮件队列中的Runnable r的所有待处理帖子。
使用removeCallbacks
作为@blackbelt Sugested或将runnable实例作为参数传递。
handlerStoper.removeCallbacks(null);
http://developer.android.com/reference/android/os/Handler.html#removeCallbacks(java.lang.Runnable)