Android - 奇怪的应用程序小部件行为:它有时会自行删除其内容

Android - Weird app widget behavior : it erases its content itself sometimes

我整个星期都在为这个问题苦苦挣扎。

我有一个调用服务来更新自身的应用小部件。

有时,在我重新运行我的应用程序后,小部件会在后台正确更新;然而,当我按下后退按钮时,小部件内容消失,只留下默认的 xml 内容。

使用调试器,AppWidgetProvider onUpdate 永远不会被调用;有时这也会在一段时间后不使用 phone;或打开和关闭 wifi。

它不显示 "error with widget" 消息。就像重新创建了小部件(内存问题?)但没有执行 updateWidget 方法。

有一次我读到从不同的进程 ID 更新小部件会导致忽略更新,但我不知道如何测试它。

问题是调用 updateAllWidgets 从 default.xml 重新创建小部件,然后通过那个更新远程视图。

如果只希望更新小部件的某些部分,在已经修改的小部件上,应该调用partiallyUpdateAppWidget

/** Update a given widget (id) with the given remoteViews instructions */
    protected static void updateWidget(Context context, RemoteViews remoteView, int widgetId){
        AppWidgetManager manager = AppWidgetManager.getInstance(context);
        manager.partiallyUpdateAppWidget(widgetId, remoteView);
    }