检查Android应用程序LocationClient是否正在请求位置更新

时间:2014-04-01 18:06:58

标签: android location-client

我正在使用PendingIntent调用requestLocationUpdates。后来我想知道这个请求是否仍然有效。我怎么能这样做?

我知道我是否调用了removeLocationUpdates,但我希望可能有其他方法可以阻止位置更新,我不想错。

这个问题不是关于地理围栏。

1 个答案:

答案 0 :(得分:1)

根据:

http://developer.android.com/reference/com/google/android/gms/location/LocationClient.html

如果您正在寻找地理围栏:

static List<Geofence>    getTriggeringGeofences(Intent intent)
Returns a list of geofences that triggers this geofence transition alert.

否则:

不,你不能以通用的方式提问。那说如果你有一个听众,有几种感兴趣的方法:

boolean  isConnectionCallbacksRegistered(GooglePlayServicesClient.ConnectionCallbacks listener)
Returns true if the specified listener is currently registered to receive connection events.


   boolean   isConnectionFailedListenerRegistered(GooglePlayServicesClient.OnConnectionFailedListener listener)
    Returns true if the specified listener is currently registered to receive connection failed events.

    void     registerConnectionCallbacks(GooglePlayServicesClient.ConnectionCallbacks listener)
    Registers a listener to receive connection events from this GooglePlayServicesClient.

    void     registerConnectionFailedListener(GooglePlayServicesClient.OnConnectionFailedListener listener)

    Registers a listener to receive connection failed events from this GooglePlayServicesClient.

所有这些都会告诉你有关你的特定听众的信息。我没有看到任何一般会回答问题的代码&#34;你有没有人听过你的任何事情&#34;?

您可以使用内省来强制API使其中的一些内部可见,但您可以完成您想要的其他一些不那么丑陋的方式。

你想要完成什么?

编辑:

同样来自文档:

  

public void requestLocationUpdates(LocationRequest request,   PendingIntent callbackIntent)

     

使用指定的回调请求位置更新   的PendingIntent。

     

此方法更适用于后台用例   用于接收位置更新,即使应用程序已被杀死   系统。为此,请使用PendingIntent进行启动   服务。对于前台用例,LocationListener版本   建议使用方法,请参阅requestLocationUpdates(LocationRequest,   LocationListener的)。

     

此PendingIntent上注册的任何先前的LocationRequests都将是   替换。

这是什么意思?

1)您的请求已上演,并且不会被取消,直到您明确致电

public void removeLocationUpdates (PendingIntent callbackIntent)

2)即使您的应用被系统杀死也是如此。 (假设背景用例。我对前台使用案例不确定。)

3)如果LocationClient已停止接收更新 - 您的意图不会得到通知。你必须打电话:

  

isConnected()检查客户端当前是否已连接到   服务,以便对其他方法的请求将成功。布尔
  isConnecting()检查客户端是否正在尝试连接到   服务。

     

使用KEY_LOCATION_CHANGED键和a发送位置更新   意图的位置值。

     

参数request更新的位置请求。   callbackIntent为每个位置更新发送的待处理意图。

以后再说一点 - 我会检查一下LocationClient是否已连接/连接。如果不是,可以安全地假设您的意图不会被解雇 - 尽管它仍然被注册。一旦你再次联系你的意图应该仍然注册。