Android FusedLocationAPI无法通过AlarmManager删除位置更新
我使用google的FusedLocationProviderClient创建了一个简单的类来获取更新的位置。i、 e:Android FusedLocationAPI无法通过AlarmManager删除位置更新,android,alarmmanager,fusedlocationproviderapi,fusedlocationproviderclient,Android,Alarmmanager,Fusedlocationproviderapi,Fusedlocationproviderclient,我使用google的FusedLocationProviderClient创建了一个简单的类来获取更新的位置。i、 e: public class LocationProvider extends LocationCallback {... private static FusedLocationProviderClient mFusedLocationClient; private LocationRequest mLocationRequest; if(mFusedLoca
public class LocationProvider extends LocationCallback {...
private static FusedLocationProviderClient mFusedLocationClient;
private LocationRequest mLocationRequest;
if(mFusedLocationClient == null) {
mFusedLocationClient = LocationServices.getFusedLocationProviderClient(mContext);
mFusedLocationClient.requestLocationUpdates(mLocationRequest,
locationCallback,
null /* Looper */);
}..}
现在,我正在使用AlarmManager在后台更新位置。但是,我无法删除位置更新:
public void stopLocationRequest(){
if(mFusedLocationClient != null){
mFusedLocationClient.removeLocationUpdates(locationCallback);
mFusedLocationClient = null;
mLocationRequest = null;
}
}
private LocationCallback locationCallback = new LocationCallback(){
@Override
public void onLocationResult(LocationResult locationResult) {
super.onLocationResult(locationResult);
Location location = locationResult.getLastLocation();
//Code of Generate Notification
}};
现在,我从BroadcastReceiver调用上面的函数stopLocationRequest,该函数在Notification.Builder中注册为addAction()
A/UnregisterListenerTask: Received call to unregister a listener without a matching registration call.
java.lang.Exception
at com.google.android.gms.internal.zzbar.zzb(Unknown Source)
at com.google.android.gms.internal.zzban.zza(Unknown Source)
at com.google.android.gms.internal.zzbdd.zzb(Unknown Source)
at com.google.android.gms.internal.zzbdd.zza(Unknown Source)
at com.google.android.gms.internal.zzbdb.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:135)
at android.os.HandlerThread.run(HandlerThread.java:61)
而且,我仍然得到更新的位置。这不是删除位置更新。请就这个问题给我任何建议。如何在
BroadcastReceiver
中获得LocationProvider
的实例?我已经在LocationProvider类中创建了FusedLocationProviderClient的静态对象。好的。用Lopper.myLooper()替换Looper
参数怎么样?在您的示例中,它是null
。其消息队列将用于实现回调机制的对象,或null用于在调用线程上进行回调。