在Stack溢出的某个地方,有一天我发现了以下代码,并对我的应用程序做了一些调整:
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是我在onCreate()中设置的Activity的上下文(this),上面的方法在Activity的onStop()方法中被调用。
不幸的是,当它被调用时,它会将应用程序的小部件替换为其他应用程序的小部件(例如AP新闻)--至少有一段时间。
怎么会发生这种事?密码有什么问题吗?
谢谢!
编辑#1:来更清楚地指出这一点:我已经为自动刷新定义了一个间隔。但除此之外,我还想不时地从Activity中更新这个小部件。This question认为这也是可能的。
编辑#2: --我刚刚看到错误的小部件只显示了几秒钟。在此之后,我自己的应用程序的小部件再次显示。
发布于 2012-07-02 12:51:21
过去,我在小部件方面遇到了一些问题,并且已经解决了它们。我真的不知道为什么我的解决方案对我有效。当它在Marco W.中工作时,我把它放在这里:我所做的就是将更新代码移动到一个服务中。当我需要更新的时候,启动服务。再说一次,我不确定,但问题已经解决了。
谢谢马可,我有更多关于Android的经验。很有趣:-)
发布于 2014-08-19 14:20:18
我通过使用允许更新所有小部件的notifyAppWidgetViewDataChanged方法解决了这个问题,我可以给出的解释是,该方法可以在修改它包含的数据之后更新集合视图(在我的例子中是StackView)。
发布于 2012-06-24 18:15:58
在小部件之外运行更新函数有什么原因吗?在我看来,使用updatePeriodMillis属性更有意义吗?您可以将该属性设置为希望小部件调用onUpdate()的频率,后者可以提供更新的信息。
http://developer.android.com/guide/topics/appwidgets/index.html#MetaData
https://stackoverflow.com/questions/11179795
复制相似问题