Android让广播接收器与服务进行通信以及与服务进行通信的最佳方式

时间:2016-04-06 21:17:57

标签: android android-intent android-activity broadcastreceiver android-service

在我的Android应用程序中,我有一个侦听网络相关意图的广播接收器(android.net.conn.CONNECTIVITY_CHANGE)。 每当网络连接发生变化时,广播接收器就会收到意图,并且需要将新的连接状态传递给服务。此服务会跟踪设备的连接状态。 接下来,我有一个活动,必须与服务通信以查找设备的连接状态,并根据连接状态执行某些操作。 处理与服务的广播接收器的通信以及接下来与服务的活动的最佳方式是什么。

1 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点,没有“最好的方法”。这完全取决于这些组件之间的其他通信。

Activity可以使用Service Intent上的附加内容向startService()发送数据。

Service可以使用Activity Intent

上的附加信息向startActivity()发送数据

Service可以使用广播Intent中的附加内容将数据发送到任何组件。其他组件(活动,广播接收器等)可以注册BroadcastReceiver来监听来自Service的数据。

Activity也可以绑定到Service,这将允许使用方法调用(AIDL)在ActivityService之间进行双向通信。这些方法调用可以是同步的也可以是异步的。

如果组件都在同一个进程中运行,您可以将状态存储在static变量中并以这种方式共享数据。

您需要查看整个应用程序并查看需要从组件移动到组件的数据,然后选择满足这些要求的方法。