Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 让服务与小部件通信_Android_Service_Android Widget - Fatal编程技术网

Android 让服务与小部件通信

Android 让服务与小部件通信,android,service,android-widget,Android,Service,Android Widget,我做了一个服务,获取某物的状态并将该状态显示为通知。我还想在小部件中显示此状态。如何在服务和小部件之间进行通信?最简单的方法是让服务在状态更改时发送广播,并让小部件实现广播接收器 发送广播的文档如下所示: (在该页面中搜索sendBroadcast) BroadcastReciver的文档如下:您可以使用更新小部件 例如: public class MyService extends IntentService { // ... private void updateWidge

我做了一个服务,获取某物的状态并将该状态显示为通知。我还想在小部件中显示此状态。如何在服务和小部件之间进行通信?

最简单的方法是让服务在状态更改时发送广播,并让小部件实现广播接收器

发送广播的文档如下所示:

(在该页面中搜索sendBroadcast)

BroadcastReciver的文档如下:

您可以使用更新小部件

例如:

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);
    }
}

我最喜欢的方法是使用事件总线。这是我完成这项任务所遇到的最干净的方式。查看Roman Nurik的Muzei项目,了解他如何利用GreenRobot的框架实现这一点。

这似乎也是一个很好的资源: