如何避免更新android中的过时小部件

时间:2010-12-15 00:16:42

标签: android size widget

在许多教程中,建议更新小部件如下;

    public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
      final int N = appWidgetIds.length;

      for (int i = 0; i < N; i++) {
       int widgetId = appWidgetIds[i];

Log.d(TAG, " ## onUpdate ## , appWidgetIds.length = "+ String.valueOf(appWidgetIds.length) + " appWidgetId = " + widgetId );

       context.startService(new Intent(context, UpdateService.class));
      }
}

但是,虽然我的主屏幕上只有一个小部件,但appWidgetIds的大小会返回52,并且每个小部件都会尝试处理更新。当然,这会导致被叫服务过载,最终导致应用程序崩溃。

在他的post中,Kostya Vasilyev为这个错误提供了一种解决方法。

这应该是一个非常常见的问题,但我无法找到此解决方案的任何替代方案。我们如何识别陈旧的小部件并避免尝试更新它们?

提前致谢。

编辑:我刚认为避免陈旧小部件的一个好方法是停止正在运行的服务(如果有的话),在完成代码后:)它似乎有救了我的一天,当然不是答案。

0 个答案:

没有答案