我有一个将可运行的“myRunnable”发布到全局处理程序的方法。 为我放在屏幕上的每个小部件调用该方法。因此,如果我放置3个小部件,则消息队列中有3个可运行的小部件。但是我怎样才能从方法外部特别删除第二个runnable,而另外两个不受影响?所有3个runnable都被称为“myRunnable”,我无法从该方法外部访问该变量。并且removeCallbacks(null)将所有内容都删除,因此我无法使用它。
答案 0 :(得分:0)
使用两个数组列表找到了一种方法。
注意:我的所有runnable都通过调用postDelayed(this)无限循环;
当我为一个小部件启动一个runnable时,我将小部件的ID添加到名为 widgetHasRunnable 的数组列表中。然后我有另一个名为 stopThisRunnable 的数组列表,它最初是空的。在特定小组件上运行的runnable检查 stopThisRunnable 以查看它是否包含此小组件的ID,每个循环。所以现在我可以从程序的其他部分向 stopThisRunnable 添加一个小部件的ID,并且某些runnable的代码将使用removeCallbacks(this)转到else语句;