我正在编写一个应用程序,在所有活动中都需要一个连接的位置客户端。如何管理客户端的状态?
为了避免麻烦,我只想调用mLocationClient.connect()
一次,并且应该能够在应用程序停止时删除位置更新/断开连接。
假设我已在启动屏幕Activity
中连接到该位置客户端,如何保持该位置客户端跨所有活动连接?
这里出现的另一个问题是,当我恢复暂停的应用程序(不是娱乐)时,应用程序不会从启动屏幕开始。在这种情况下,我如何维护连接?
提前谢谢。
发布于 2014-06-16 01:16:42
您需要的是一个绑定服务:这些服务只在客户端(比如您的一个活动)连接到它时才能使用。这允许您拥有共享状态(单个连接的位置客户端),同时仍然确保适当地连接/断开连接。
在这种情况下,任何位置感知活动都会绑定到服务。当第一个活动(例如,启动屏幕活动)绑定到该服务时,该服务将启动并连接到Google服务。然后,您的服务的Binder
将提供对任何连接活动的LocationClient
的访问权。当您在活动之间移动时,每个活动将依次绑定到服务,并能够获取当前位置数据,而每个位置数据将被销毁。
当用户退出应用程序(即,最后一个活动被销毁)时,服务将自动停止,允许您断开与Google服务的连接。
只要您从每个需要位置数据的活动绑定到服务,那么哪个活动最初启动服务并不重要:如果需要的话,服务只会连接。
https://stackoverflow.com/questions/24235474
复制相似问题