2017-09-19 65 views
1

我有一个方法将可运行的“myRunnable”发布到全局处理程序。 该方法是为我放在屏幕上的每个小部件调用的。所以如果我放3个小部件,那么在消息队列中有3个可运行的。但是,我怎样才能从方法外部特别移除第二个可运行对象,而另一个2却未改变?所有3个runnable都称为“myRunnable”,我不能从该方法外部访问该变量。而removeCallbacks(null)会把所有东西都拿出来,所以我不能使用它。如何删除在结束的方法调用中发布的runnable?

+0

请张贴您的代码。 – Kristopher

回答

0

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

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

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

相关问题