Android 让每个 activity 获取位置信息?

Android make every activity get location information?

在 activity A 中,我从 A1 和 A2 得到了 2 个片段,用户可以访问 Activity B 和 Activity C。我的问题是,activity B 和 C 需要位置信息(如 Lat、lng)。我怎样才能在正常 UI 绘图中没有巨大延迟的情况下实现这一目标?

我有2个不成功的方案:

  1. 直接用A获取位置,传值给A1和A2,最后传给B和C。如果用户在室内,位置信息,需要一段时间才能收到。如果用户在没有位置信息的情况下访问B和C怎么办?

  2. 使用服务。但是,我不需要很长时间的位置识别,而且,即使服务可以向所有人发送广播,B 和 C 可以在他们的 onCreate() 之前接收广播消息吗?此外,广播需要一段时间才能接收,这会显着影响初始化。

考虑这个事件总线模式的实现。您唯一应该考虑的是传递一个 UI 线程执行器。

http://square.github.io/otto/

嘿你实际上有很多选择

  • 创建包含 GoogleApiClient 的绑定服务。将此服务绑定到您需要的活动并在其中接收数据。
  • 使用事件总线。使用 GoogleApiClient 创建 class 以获取位置,然后只需在 activities/fragments 中捕获您需要的数据
  • 使用 Dagger2 将 GoogleApiClient @module 注入到您需要的activities/fragments。

希望对你有所帮助 ;)