Android 如何从服务更新小部件?

Android 如何从服务更新小部件?,android,widget,Android,Widget,我有一个后台服务,可以配置为每x分钟执行一次操作。我想实现一个小部件,它在每次我的服务执行该操作时都会得到更新。但是,我无法以任何方式调用AppWidgetProvider的onUpdate方法,除非在主屏幕上添加小部件 我尝试发送APPWIDGET_更新意图,但没有调用onUpdate,尽管AppWidgetProvider确实收到了意图,因为调用了onReceive方法。有什么方法可以从服务触发小部件更新吗?只需让自己成为远程视图,并直接在服务中更新小部件。您将通过以下方式获得您的AppWi

我有一个后台服务,可以配置为每x分钟执行一次操作。我想实现一个小部件,它在每次我的服务执行该操作时都会得到更新。但是,我无法以任何方式调用AppWidgetProvider的onUpdate方法,除非在主屏幕上添加小部件


我尝试发送APPWIDGET_更新意图,但没有调用onUpdate,尽管AppWidgetProvider确实收到了意图,因为调用了onReceive方法。有什么方法可以从服务触发小部件更新吗?

只需让自己成为
远程视图
,并直接在
服务中更新小部件。您将通过以下方式获得您的
AppWidgetManager

AppWidgetManager mgr=AppWidgetManager.getInstance(this);
其他一切正常


注意:-如果您真的想强制现有的
AppWidgetProvider
执行此工作,请向您的组件发送一个带有自定义操作的广播,并在收到时从
onReceive()
调用
onUpdate()

谢谢!第二个建议是我所做的,它就像一个符咒。为什么我自己没有想到……:)onUpdate需要一个数组int[]AppWidgetId作为参数。当您使用onReceive方法时,如何计算它?@Guido:Call
getAppWidgetIds()
on
AppWidgetManager
:@commonware那么如果您有多种类型的小部件怎么办;这样,代码的可扩展性就不强了,因为您必须手动获取ID并更新所有小部件类型的视图?(并不是说你会有几十种不同类型的ofc)