android – 您应该在每项活动中连接和断开与Google Play服务的连接吗?
作者:互联网
我正在编写一个在所有活动中都需要连接位置客户端的应用程序.如何管理客户的状态?
我想只调用一次mLocationClient.connect()以避免麻烦,并且应该能够在应用程序停止时删除位置更新/断开连接.
如何在所有活动中保持位置客户端连接,假设我已在启动屏幕活动中连接到它?
这里出现的另一个问题是,当我恢复暂停的应用程序(而非娱乐)时,应用程序将不会以启动画面启动.在这种情况下如何保持连接?
提前致谢.
解决方法:
您需要的是bound service:这些服务仅在客户端(如您的某个活动)与之连接时才会生效.这允许您拥有共享状态(单个连接的位置客户端),同时仍确保您正确连接/断开连接.
在这种情况下,任何位置感知活动都将绑定到该服务.当第一个活动(例如,您的启动画面活动)绑定到该服务时,该服务将启动并连接到Google Play服务.然后,您的服务的Binder将访问其LocationClient以访问任何连接的活动.当您在活动之间移动时,每个活动将依次绑定到服务,并且能够获取当前位置数据,并且每个数据都会被销毁.
当用户退出您的应用程序(即最后一个活动被销毁)时,该服务将自动停止,允许您断开与Google Play服务的连接.
只要您从需要位置数据的每个活动绑定到服务,最初哪个活动启动服务都无关紧要:如果需要,服务只会连接.
标签:android,state,google-play-services,location-client 来源: https://codeday.me/bug/20190624/1278419.html