如何删除在结束的方法调用中发布的runnable?

时间:2017-09-19 00:36:41

标签: android android-widget handler runnable

我有一个将可运行的“myRunnable”发布到全局处理程序的方法。 为我放在屏幕上的每个小部件调用该方法。因此,如果我放置3个小部件,则消息队列中有3个可运行的小部件。但是我怎样才能从方法外部特别删除第二个runnable,而另外两个不受影响?所有3个runnable都被称为“myRunnable”,我无法从该方法外部访问该变量。并且removeCallbacks(null)将所有内容都删除,因此我无法使用它。

1 个答案:

答案 0 :(得分:0)

使用两个数组列表找到了一种方法。

注意:我的所有runnable都通过调用postDelayed(this)无限循环;

当我为一个小部件启动一个runnable时,我将小部件的ID添加到名为 widgetHasRunnable 的数组列表中。然后我有另一个名为 stopThisRunnable 的数组列表,它最初是空的。在特定小组件上运行的runnable检查 stopThisRunnable 以查看它是否包含此小组件的ID,每个循环。所以现在我可以从程序的其他部分向 stopThisRunnable 添加一个小部件的ID,并且某些runnable的代码将使用removeCallbacks(this)转到else语句;