Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android FusedLocationAPI无法通过AlarmManager删除位置更新_Android_Alarmmanager_Fusedlocationproviderapi_Fusedlocationproviderclient - Fatal编程技术网

Android FusedLocationAPI无法通过AlarmManager删除位置更新

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

我使用google的FusedLocationProviderClient创建了一个简单的类来获取更新的位置。i、 e:

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用于在调用线程上进行回调。