1

我有一个前台服务正在处理来自位置管理器的 gps 位置。我将这些存储在一个通用的“位置控制器”单例中。目前我的活动也在访问这个类。这可以接受吗?它似乎比使用处理程序消息更有效。

4

2 回答 2

0

只要您非常确定不会引入任何内存泄漏,这并没有什么真正的问题。其他现有的消息总线解决方案,如LocalBroadcastManager(来自 Android 支持库)、Otto和 kin 在幕后使用单例。

我建议您使用LocalBroadcastManagerOtto 或其他东西,而不是自己滚动,因为它们得到了更好的支持和测试。吨

于 2013-02-24T20:50:21.683 回答
0

对于这种特殊情况,由于您希望频繁更新位置,因此应将其传达给activity; 我会说bind定位服务可能是一个更合适的解决方案。

所以基本上,在您的活动中,onResumebind向服务传递一个listener对象,service只要存在位置更新,就会调用该对象。此外,您应该unbind使用onPause.

请注意在绑定之前启动服务,以便在活动不再处于前台时继续运行。

我有非常相似的案例,这个解决方案效果很好,它使您能够添加一个service类似的方法getLastLocation(),可以按需从活动中调用。

于 2013-02-24T21:05:04.980 回答