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中,它工作正常,错误被修复了