Android 处理程序正在阻止活动结束
我已声明私有处理程序mHandler=new Handler();并在我的活动中多次使用此处理程序。例如:Android 处理程序正在阻止活动结束,android,android-activity,handler,Android,Android Activity,Handler,我已声明私有处理程序mHandler=new Handler();并在我的活动中多次使用此处理程序。例如: // fade out view nicely after 5 seconds mHandler.postDelayed(new Runnable() { public void run() { tview.setText(null); } }, 4000);
// fade out view nicely after 5 seconds
mHandler.postDelayed(new Runnable() {
public void run() {
tview.setText(null);
}
}, 4000);
或
现在,如果我返回(通过按下后退按钮),当这个处理程序已经开始它的操作时,因为这个处理程序活动没有结束。我希望mHandler停止它正在做的任何事情,不要阻止活动结束。我该怎么做
我该怎么做
我不太明白你们想说什么,但若我理解正确,你们需要重写这个方法,在这里你们将停止处理程序并完成活动
伪代码:
@Override
public void onBackPressed() {
// stop Handler
handler.removeCallbacks(runnable);
// to stop anonymous runnable use handler.removeCallbacksAndMessages(null);
finish();
}
由于您的Runnable是匿名的,因此需要使用第二种方法:
handler.removeCallbacksAndMessages(null);
如果您对这种方法感到困惑,以下是它的文档:
删除任何挂起的回调帖子和obj为的已发送邮件
代币如果令牌为null,则将删除所有回调和消息
获取
Runnable
的指针并尝试以下操作:
@Override
public void onBackPressed() {
myHandler.removeCallbacks(myRunnable);
finish();
}
@纳泽尔克在回答时抢掠。所以你的runnable是匿名的,所以你需要使用注释代码。我没有指向runnable的指针,你可以从我的代码中看到。postDelayed(new Runnable(){public void run(){tview.setText(null);}}},4000);我将Runnable声明为一个方法parameter@Nazerke是的,我是这么说的,仔细看答案并阅读评论。谢谢。抱歉,我没有注意到您在回答中所做的更新。
@Override
public void onBackPressed() {
myHandler.removeCallbacks(myRunnable);
finish();
}