如何停止处理程序Runnable?

我在下面的程序中使用一个处理程序,我想在I=5时停止它,但该处理程序不会停止并持续运行

b1.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
handler=新的handler();
runnable=新的runnable(){
公开募捐{
试一试{
Toast.makeText(getApplicationContext(),“处理程序正在工作”,Toast.LENGTH_LONG.show();
系统输出打印(“处理程序正在工作”);
如果(i==5){
//Thread.currentThread().interrupt();
handler.removeCallbacks(可运行);
系统输出打印(“ok”);
Toast.makeText(getApplicationContext(),“ok”,Toast.LENGTH\u LONG.show();
}
i++;
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
} 
handler.postDelayed(这个,5000);
}
};
handler.postDelayed(可运行,5000);
//返回;
}
});

因为您在删除回拨后再次调用了postDelayed()。请使用此代码:

最终处理程序=新处理程序();
final Runnable Runnable=新Runnable(){
公开募捐{
Log.d(“可运行”,“处理程序正在工作”);
如果(i==5){//只需删除回调
handler.removeCallbacks(此);
Log.d(“可运行”、“正常”);
}否则{//再发一次
i++;
handler.postDelayed(这个,5000);
}
}
};
//现在在某个方法中
b1.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
handler.removeCallbacks(可运行);
handler.postDelayed(可运行,5000);
}
});

发表评论