我在 android 中有一个服务,它不断地提取传感器信息并通过网络接口(interface)发送它们。
另一方面,我有几个 Activity 将以不同方式使用这些传感器值。由于服务以事件驱动的方式获取值,我如何才能将这些值仅传递给前台的 Activity ?
提前致谢
最佳答案
我假设这是“本地”服务的最常见情况,即与 Activity 在同一进程中运行。
有两种解决方案,一种是服务发送 Intent 到在 onStart()
和 onStop()中注册和注销适当的
.BroadcastReceiver
的 Activity
另一个使用监听器机制。您可以获得对服务实例的引用,如 here 所述.在服务中写一个setListener(ServiceListener l)
方法
和一个 ServiceListener
接口(interface),您将能够在您的 Activity 中实现一个监听器并将其设置在服务上。
Intent 方法可能更简单且风险较小,但您必须坚持使用 Intent extra 进行数据交换。
监听器方式更灵活,但我读到必须确保取消注册监听器,否则您可能会成为内存。泄漏整个 Activity 。
关于android - 从服务传递信息到前台 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5111419/