我正在编写一个具有 3 个 mapactivities 的应用程序,并且我已经实现了一个本地服务(如 google 教程),该服务从位置管理器接收更新,以在这些活动之间共享来自 gps 的位置数据。现在我想把每一个活动都放在分开的过程中,以遵循谷歌的建议。
所以我的问题是我必须如何处理?为远程服务实现和 AIDL 接口或将每个地图活动注册到位置侦听器?
感谢您的回答,对不起我的英语不好:P
我正在编写一个具有 3 个 mapactivities 的应用程序,并且我已经实现了一个本地服务(如 google 教程),该服务从位置管理器接收更新,以在这些活动之间共享来自 gps 的位置数据。现在我想把每一个活动都放在分开的过程中,以遵循谷歌的建议。
所以我的问题是我必须如何处理?为远程服务实现和 AIDL 接口或将每个地图活动注册到位置侦听器?
感谢您的回答,对不起我的英语不好:P
如果它只是需要位置信息的单个应用程序,那么使用远程服务和 AIDL 是不必要的复杂化。最简单的方法是拥有一个活动可以绑定的本地服务,然后让该服务使用 sendBroadcast() 发送位置信息。然后活动可以注册一个 BroadcastReceiver 来获取这些数据。
经过一些研究,我认为最好的方法是使用 Android 文档http://developer.android.com/guide/topics/fundamentals/bound-services.html#Messenger中描述的信使实现 IPC .. 我会对此进行测试解决方案在这里报告结果..
最好的教程是http://developer.android.com/reference/android/app/Service.html#RemoteMessengerServiceSample,其中实现了客户端和服务的 2 路通信。
先说理由:
Javadoc 中的那句话有点……奇怪。如果您将“运行”理解为介于 onResume() 和 onPause() 之间,那么通常属于同一应用程序的两个活动不能“同时运行”。您可能必须弄乱 Application 类或操作系统本身才能使其表现不同。
也就是说,我现在实际上正在开发一个应用程序,它使用了几个 MapActivity 子类并且到目前为止还没有遇到任何问题(即在模拟器和设备上进行了 40 多个小时的开发和测试)。
因此我建议:
简而言之,由于 Android 的实际碎片化,将您的活动保持在一个进程中并通过从更简单的实现开始投入更多时间将比人为拆分您的应用程序更安全,最终更省时且可能更有效的方法,并且可能在 IPC 上咬牙切齿。至少在我看来。