4

我正在编写一个应用程序,它在所有活动中都需要一个连接的位置客户端。如何管理客户端的状态?

我想mLocationClient.connect()只调用一次以避免麻烦,并且应该能够在应用程序停止时删除位置更新/断开连接。

假设我已在启动画面中连接到位置客户端,如何在所有活动中保持连接Activity

这里出现的另一个问题是,当我恢复暂停的应用程序(而不是重新启动)时,应用程序不会以启动画面启动。在这种情况下如何保持连接?

提前致谢。

4

1 回答 1

4

您需要的是绑定服务:这些服务仅在客户端(如您的一个活动)连接到它时才存在。这允许您拥有共享状态(单个连接的位置客户端),同时仍确保您正确连接/断开连接。

在这种情况下,任何位置感知活动都将绑定到服务。当第一个活动(例如,您的启动屏幕活动)绑定到服务时,服务将启动并连接到 Google Play 服务。然后,您的服务Binder将授予LocationClient对任何关联活动的访问权限。当您在活动之间移动时,每个活动都会依次绑定到服务并能够获取当前位置数据,并且每个活动都会被销毁。

当用户退出您的应用程序(即最后一个活动被销毁)时,该服务将自动停止,从而允许您与 Google Play 服务断开连接。

只要您从需要位置数据的每个活动绑定到服务,最初哪个活动启动服务都没有关系:服务只会在需要时连接。

于 2014-06-16T01:16:42.820 回答