Android在多个地图活动之间共享位置服务

时间:2012-01-08 14:46:47

标签: android gps cllocationmanager android-service mapactivity

我正在编写一个包含3个mapactivities的应用程序,并且我已经实现了一个本地服务(如Google教程),该服务从位置管理器获取更新,以便在这些活动之间共享来自gps的位置数据。 现在,我想将每个活动分开处理,以遵循谷歌的建议。

所以我的问题是如何处理? 用于远程服务的实现和AIDL接口或将每个mapactivity注册到位置监听器??

感谢您的回答并抱歉我的英语不好:P

3 个答案:

答案 0 :(得分:0)

如果它只是一个需要位置信息的应用程序,那么使用远程服务和AIDL是不必要的复杂功能。最简单的方法是拥有一个活动可以绑定的本地服务,然后让服务使用sendBroadcast()来发送位置信息。然后,活动可以注册BroadcastReceiver以获取此数据。

答案 1 :(得分:0)

首先是理由:

Javadoc中的引用有点......很奇怪。如果你理解“运行”在onResume()和onPause()之间,那么通常属于同一个应用程序的两个活动不能“同时运行”。您可能不得不使用Application类或操作系统本身来使其具有其他行为。

也就是说,我实际上正在开发一个使用多个MapActivity子类并且到目前为止没有遇到任何问题的应用程序(即40 + h的开发和测试,无论是在模拟器还是设备上)。


因此我建议:

  1. 尝试使用本地服务将您的应用程序实现为单进程活动,然后使用它运行。
  2. 如果你不想这样做(不能责怪你;)),或者你遇到任何问题,我建议你开始使用MapView,也许是封装在Fragment中。 Here's a discussion让你入门。
  3. 简而言之,由于Android的实际碎片化,将您的活动保持在一个流程中并通过更简单的实施开始提供更多时间将是一种更安全,最终耗时更少且可能更有效的方法,而不是人为地分割您的应用程序并可能在IPC上咬紧牙关。至少在我看来。

答案 2 :(得分:0)

经过一些研究后,我认为最好的方法是使用Android doc http://developer.android.com/guide/topics/fundamentals/bound-services.html#Messenger中描述的信使实施IPC ..我将在此处测试此解决方案的结果..

最佳教程是http://developer.android.com/reference/android/app/Service.html#RemoteMessengerServiceSample,其中实现了来自客户端和服务的双向通信。

相关问题