将来自服务的信息传递给前台活动

biq*_*llo 5 service android design-patterns android-activity

我在 android 中有一项服务,它不断提取传感器信息并通过网络接口发送它们。

另一方面,我有几个活动将以不同的方式使用这些传感器值。由于服务以事件驱动的方式获取值,我如何仅将这些值传递给前台的活动?

提前致谢

big*_*nes 5

我认为这是“本地”服务最常见的情况,即与活动在同一进程中运行。

有两种解决方案,一种是服务向注册和取消注册正确的BroadcastReceiverinonStart()和的活动发送意图onStop()

另一个使用侦听器机制。您可以获取对服务实例的引用,如此处所述。在服务中编写setListener(ServiceListener l)方法和ServiceListener接口,您将能够在活动中实现侦听器并将其设置在服务上。

意图方式可能更简单且风险更小,但您必须坚持使用意图附加方式进行数据交换。

侦听器方式更灵活,但我读到必须确保取消注册侦听器,否则您可能会陷入困境。泄露整个活动。