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

发布于 2024-10-07 19:17:56 字数 904 浏览 1 评论 0原文

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

    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,并且每个小部件都尝试处理更新。当然,这会导致被调用服务过载,最终导致应用程序崩溃。

在他的帖子中, Kostya Vasilyev 提供了针对此错误的解决方法。

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

提前致谢。

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

In many tutorials, the updating of a widget is suggested to be as follows;

    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));
      }
}

However, though there is only one widget on my homescreen, the size of appWidgetIds returns 52 and each one of them tries to process an update. This, of course, causes an overload on the called service, eventually crashing the application.

In his post, Kostya Vasilyev offers a workaround for this bug.

This should be quite a common issue but I couldnT find any alternatives to this solution. How could we identify the stale widgets and avoid trying to update them?

Thanks in advance.

EDIT : I ve just figured one good way to avoid stale widgets is to stop the running service (if there is any), upon the completion of the code in it :) This seems to have saved my day, of course it s not the answer though.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文