我有一个前台服务正在处理来自位置管理器的 gps 位置。我将这些存储在一个通用的“位置控制器”单例中。目前我的活动也在访问这个类。这可以接受吗?它似乎比使用处理程序消息更有效。
问问题
83 次
2 回答
0
只要您非常确定不会引入任何内存泄漏,这并没有什么真正的问题。其他现有的消息总线解决方案,如LocalBroadcastManager
(来自 Android 支持库)、Otto和 kin 在幕后使用单例。
我建议您使用LocalBroadcastManager
Otto 或其他东西,而不是自己滚动,因为它们得到了更好的支持和测试。吨
于 2013-02-24T20:50:21.683 回答
0
对于这种特殊情况,由于您希望频繁更新位置,因此应将其传达给activity
; 我会说bind
定位服务可能是一个更合适的解决方案。
所以基本上,在您的活动中,onResume
您bind
向服务传递一个listener
对象,service
只要存在位置更新,就会调用该对象。此外,您应该unbind
使用onPause
.
请注意在绑定之前启动服务,以便在活动不再处于前台时继续运行。
我有非常相似的案例,这个解决方案效果很好,它使您能够添加一个service
类似的方法getLastLocation()
,可以按需从活动中调用。
于 2013-02-24T21:05:04.980 回答