Java 我真的无法阻止处理者!我该怎么办?

Java 我真的无法阻止处理者!我该怎么办?,java,android,handler,runnable,Java,Android,Handler,Runnable,我已经在谷歌上搜索过了,所有的主题都是相同的解决方案handler.removeCallbacks(null)或handler.removeCallbacksAndMessages(null)。但是没有一个为我工作 Handler handler; Runnable runnable; @Override protected void onCreate(Bundle savedInstanceState) { //... handler = new Handler();

我已经在谷歌上搜索过了,所有的主题都是相同的解决方案
handler.removeCallbacks(null)
handler.removeCallbacksAndMessages(null)
。但是没有一个为我工作

Handler handler;
Runnable runnable;

@Override
protected void onCreate(Bundle savedInstanceState) { 

    //...

    handler = new Handler();

    runnable = new Runnable() {
        @Override
        public void run() {
            time -= 100;
            if(time == 0){
                Intent i = new Intent(Question.this, WrongAnswer.class);
                startActivity(i);
                finish();
            }
            else{
                handler.postDelayed(this, 100);
            }
        }
    };

    handler.postDelayed(runnable,3000);

    //...
}
以下是活动在时间结束前退出的情况:

if(myAnswer == correctAnswer)
{
    Intent i = new Intent(this, CorrectAnswer.class);
    startActivity(i);
    handler.removeCallbacksAndMessages(null);
    finish();
}

处理程序运行之前,您需要将您的runnable设置为全局。removeCallbacks(runnable)
将起作用。此外,您还可以使用全局变量检查是否已取消(这只是出于安全考虑)

然后:

isCancelled = true;
handler.removeCallbacks(mRunnable);

处理程序运行之前,您需要将您的runnable设置为全局。removeCallbacks(runnable)
将起作用。此外,您还可以使用全局变量检查是否已取消(这只是出于安全考虑)

然后:

isCancelled = true;
handler.removeCallbacks(mRunnable);

改为使用handler.removeCallbacks(runnable)。我尝试过使用handler.removeCallbacks(runnable),但同样的问题出现了,即使在runnable中调用finish,您的处理程序仍在运行?这不会停止当前活动吗?首先,我运行意图以切换到另一个活动,然后使用handler.removeCallbacksAndMessages(null)停止处理程序,但在我的情况下,它不起作用。然后我使用finish()退出上一个活动。可能是因为意图而发生了什么。据我在其他帖子上看到的,他们没有使用IntentSe handler.removeCallbacks(runnable)。我尝试过使用handler.removeCallbacks(runnable),但同样的问题出现了,即使在runnable中调用finish,您的处理程序仍在运行?这不会停止当前活动吗?首先,我运行意图以切换到另一个活动,然后使用handler.removeCallbacksAndMessages(null)停止处理程序,但在我的情况下,它不起作用。然后我使用finish()退出上一个活动。可能是因为意图而发生了什么。据我在其他帖子上看到的,他们没有使用intents,我认为handler和runnable已经是全局的,因为我在oncreatemethon之前声明了它们。我做错了什么吗?你试过isCancelled boolean吗?是的,我没有试过,可能是因为我完成了()活动,变量被破坏了。我不知道。我用isCancelled boolean的原理解决了这个问题,但我将数据存储在SharedReferences中,并且工作正常,这个bug已经修复了,我认为handler和runnable已经是全局的,因为我在oncreatemethon之前声明了它们。我做错了什么吗?你试过isCancelled boolean吗?是的,我没有试过,可能是因为我完成了()活动,变量被破坏了。我不知道。我用isCancelled boolean的原理解决了这个问题,但是我将数据存储在SharedReferences中,它工作正常,错误被修复了