我有一项服务,我获取了某种状态,并将该状态显示为通知。我还想在窗口小部件中显示此状态。我如何在服务和小部件之间进行通信?
答案 0 :(得分:0)
最简单的方法是让服务在状态发生变化时发送广播并让小部件实现广播接收器。
发送广播的文档在这里:
http://developer.android.com/reference/android/content/Context.html(搜索sendBroadcast的页面)
BroadcastReciver的文档位于:http://developer.android.com/reference/android/content/BroadcastReceiver.html
答案 1 :(得分:0)
您可以使用AppWidgetManager
更新小部件。
例如:
public class MyService extends IntentService {
// ...
private void updateWidgets() {
AppWidgetManager widgetManager = AppWidgetManager.getInstance(this);
// Get a list of widgets to update
int[] widgetIds = widgetManager.getAppWidgetIds(new ComponentName(this, MyAppWidgetProvider.class);
// Update the widgets
RemoteViews updatedViews = // Create your new RemoteViews here
widgetManager.updateAppWidget(widgetIds, updatedViews);
}
}
答案 2 :(得分:0)
我最喜欢的方法是使用事件总线。这是我完成这项任务时遇到的最干净的方式。查看Roman Nurik的Muzei项目,了解他如何使用GreenRobot的框架。 https://github.com/romannurik/muzei/search?q=EventBus&ref=cmdform