Android的LocationRequest:当请求到期时得到一个callback

我不知道如何捕捉事件或什么时候我的LocationReqest过期,inheritance人代码然后我称之为

mLocationRequest = LocationRequest.create(); mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); mLocationRequest.setExpirationDuration(500); mLocationRequest.setNumUpdates(1); mLocationClient.requestLocationUpdates(mLocationRequest, this); 

现在我需要知道我的LocationRequest是break,ty的帮助:)

编辑

我以为我能抓住它

 public void onLocationChanged(Location location) { //something is here } 

但它不工作:(

EDIT2

我部分地通过添加处理程序来解决它,如果位置设置了N + 500ms之后检查,我仍然想知道如果我没有处理程序,我可以做到这一点

你必须自己处理。 在requestLocationUpdates之后立即发布Runnable,如下所示:

 mLocationRequest = LocationRequest.create(); mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); mLocationRequest.setExpirationDuration(500); mLocationRequest.setNumUpdates(1); mLocationClient.requestLocationUpdates(mLocationRequest, this); mHandler.postDelayed(mExpiredRunnable, 500); 

这里是Runnable:

 private final Runnable mExpiredRunnable = new Runnable() { @Override public void run() { showUnableToObtainLocation(); } }; 

showUnableToObtainLocation方法将有任何你想要执行的位置修复无法获得时执行的逻辑。

在通常的情况下,你实际上得到一个位置修复,你把代码放在onLocationChanged取消Runnable:

 mHandler.removeCallbacks(mExpiredRunnable); 

您还需要在onPause方法中使用相同的代码,以防活动/片段在位置修复之前或请求过期前后台。