Android 处理程序正在阻止活动结束

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);

我已声明私有处理程序mHandler=new Handler();并在我的活动中多次使用此处理程序。例如:

        // 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();
}