我有一个后台服务,可以配置每隔x分钟执行某些操作。我想要实现一个小部件,每当我的服务执行该操作时,它就会得到更新。然而,除了将小部件添加到主屏幕以外,我无法以任何方式调用AppWidgetProvider的onUpdate方法。 我尝试发送APPWIDGET_UPDATE意图,但是虽然AppWidgetProvider接收到了意图(因为onReceive方法被调用了),但onUpdate没有被调用。是否有任何方法可以从服务中触发小部件更新呢?
只需创建一个RemoteViews,并直接在Service中更新小部件即可。您可以通过以下方式获取AppWidgetManager:AppWidgetManager mgr=AppWidgetManager.getInstance(this); 其他一切都与平常一样。 注意:如果您真的想强制现有的AppWidgetProvider执行工作,可以发送具有自定义操作的广播到您的组件,并在收到它时从onReceive()调用onUpdate() 。
AppWidgetManager
上调用getAppWidgetIds()
:http://developer.android.com/reference/android/appwidget/AppWidgetManager.html - CommonsWare