您是否应该在每项活动中连接和断开与Google Play服务的连接?

时间:2014-06-16 01:01:52

标签: android google-play-services state location-client

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

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

如果我已在所有活动中保持位置客户端连接,假设我已在启动屏幕Activity中连接到该客户端?

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

提前致谢。

1 个答案:

答案 0 :(得分:4)

您需要的是bound service:这些服务仅在客户端(如您的某项活动)与之相连时才会生效。这允许您拥有共享状态(单个连接的位置客户端),同时仍确保您正确连接/断开连接。

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

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

只要您从需要位置数据的每个活动绑定到服务,最初哪个活动启动服务并不重要:如果需要,服务就会连接。