令人困惑的是,FusedLocationProviderApi停止发送意图。
更详细一点: 我有一个构建GoogleApiClient的Android服务。
mClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addApi(ActivityRecognition.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mClient.connect();
连接后,我使用以下方式请求位置更新:
// Set up periodic location updates
Intent locationIntent = new Intent(this, LocationReceiver.class);
mLocationPendingIntent = PendingIntent.getBroadcast(
this,
0,
locationIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
mFusedLocationProviderApi.requestLocationUpdates(
mClient,
mLocationRequest,
mLocationPendingIntent);
我使用以下方式请求检测到的活动:
// Set up activity recognition
Intent activityRecognizedIntent = new Intent(
this,
ActivityRecognizedReceiver.class);
mActivityRecognizedPendingIntent = PendingIntent.getBroadcast(
this,
0,
activityRecognizedIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
mActivityRecognitionApi.requestActivityUpdates(
mClient,
ACTIVITY_DETECTION_INTERVAL,
mActivityRecognizedPendingIntent);
当操作系统杀死该服务时,例如当我将新版本的应用程序推送到我的手机时,ActivityRecognizedReceiver会继续接收更新!我怎么能阻止这种情况发生?为什么LocationReceiver 停止接收更新?
答案 0 :(得分:1)
您需要删除位置更新请求,例如:
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient,
getPendingIntent(context));
答案 1 :(得分:0)
应用程序必须仍在运行。除非你用一些应用程序杀死它,它不会停止。最好在设置中尝试杀戮。
如果你想以编程方式停止它
onPause方法中的停止接收更新
并在onResume方法中再次开始接收更新。