如何在for循环中停止handler.postDelayed?
How to stop handler.postDelayed in for-loop?
对于这种类型的使用,我没有看到真正的答案 "handler.posDelayed"。
因此,我使用 for 循环多次执行 "handler.posDelayed"。问题是,当我离开 activity 并重新启动它时,处理程序中的新对象和旧对象也会被执行。我不知道,如何从处理程序中停止旧对象。
private Handler handler = new Handler();
private void startHandler() {
handler.removeCallbacksAndMessages(runnable); // DOESN'T WORK
long time = 0;
for(int i = 0; i < balls.length; i++){
handler.postDelayed(runnable, time + i);
}
}
private Runnable runnable = new Runnable() {
@Override
public void run() {
// Some code..
}
};
首先,你应该使用removeCallbacks()
,而不是removeCallbacksAndMessages()
您似乎还有待处理的 Runnables
,当您的 Activity
显示 "bye bye" 时,您应该将其删除,因此请尝试在 onPause
中调用 removeCallbacks()
/onStop
/onDestroy
对于这种类型的使用,我没有看到真正的答案 "handler.posDelayed"。
因此,我使用 for 循环多次执行 "handler.posDelayed"。问题是,当我离开 activity 并重新启动它时,处理程序中的新对象和旧对象也会被执行。我不知道,如何从处理程序中停止旧对象。
private Handler handler = new Handler();
private void startHandler() {
handler.removeCallbacksAndMessages(runnable); // DOESN'T WORK
long time = 0;
for(int i = 0; i < balls.length; i++){
handler.postDelayed(runnable, time + i);
}
}
private Runnable runnable = new Runnable() {
@Override
public void run() {
// Some code..
}
};
首先,你应该使用removeCallbacks()
,而不是removeCallbacksAndMessages()
您似乎还有待处理的 Runnables
,当您的 Activity
显示 "bye bye" 时,您应该将其删除,因此请尝试在 onPause
中调用 removeCallbacks()
/onStop
/onDestroy