在 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
'sonStop()
方法中被调用。
不幸的是,当它被调用时,它会用其他应用程序的小部件(例如美联社新闻)替换应用程序的小部件 - 至少在一段时间内。
这怎么可能发生?代码有问题吗?
谢谢!
编辑#1:更清楚地指出这一点:我已经定义了自动刷新的间隔。但除此之外,我想Activity
不时更新小部件。这个问题表明它也是可能的。
编辑#2:我刚刚看到错误的小部件只显示了几秒钟。之后,我自己的应用程序的小部件再次显示。