java - 如何在for循环中停止handler.postDelayed?

标签 java android for-loop handler runnable

对于这种使用“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 说“再见”时,您应该将其删除,因此请尝试调用 removeCallbacks()onPause/onStop/onDestroy

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

相关文章:

android - 在 Android 上以编程方式获取 MPEG-4 视频流的配置文件

解码位图时出现 Android OutOfMemoryError

for-loop - for range 的性能

java - 如何设计可扩展的错误码?

java - 将对象存储到数组时线程 "main"java.lang.ArrayStoreException 中出现异常

java - 在 Java 中多线程处理这个网络代码?

windows - 反转 FOR 命令的含义?

java - ISO 8601 带毫秒和改造

android - 如何为 Android、Eclipse 启用布局设计器?

字符数组打印比我指定的少 1 个字符