对于使用“ handler.posDelayed”的这种类型,我没有看到真正的答案。

因此,我使用for循环多次执行“ handler.posDelayed”。问题是,当我离开活动并重新启动活动时,处理程序中的新对象和旧对象也会被执行。我不知道如何从处理程序中停止旧对象。

        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,因此请尝试在removeCallbacks() / onPause / onStop中调用onDestroy

关于java - 如何停止for循环中的handler.postDelayed?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30957621/

10-13 08:40