在 Stack Overflow 上的某个地方,有一天我发现了以下代码,稍微调整了一下以适应我的应用:
private void updateWidget() {
AppWidgetManager widgetManager = AppWidgetManager.getInstance(ctx);
ComponentName widgetComponent = new ComponentName(ctx, MyAppWidgetProvider.class);
int[] widgetIds = widgetManager.getAppWidgetIds(widgetComponent);
Intent update = new Intent();
update.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, widgetIds);
update.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
ctx.sendBroadcast(update);
}
这将以编程方式刷新应用程序小部件的所有实例。`ctx` 是 `Activity` 的上下文(即 `this`),我在 `onCreate()` 中设置了一次。上面的方法在 `Activity` 的 `onStop()` 方法中调用。
不幸的是,当它被调用时,它会替换应用程序小部件为其他应用程序的小部件(例如 AP News)- 至少有一段时间。
这是怎么发生的?代码有问题吗?
谢谢!
编辑#1:更明确地指出:我已经定义了自动刷新的间隔。但除此之外,我还想不时地从 `Activity` 更新小部件。 这个问题也提出了可能性。
编辑#2:我刚刚看到错误的小部件只显示了几秒钟。之后,我的应用程序的小部件再次显示。
AppWidgetManager.getAppWidgetIds()
不是问题,它很好地工作,因为这些 ID 然后传递给我的服务。你能把它写成答案,这样我就可以接受它了吗? :) - caw