完成FusedLocationClientProvider的removeLocationUpdates时收到回调的最佳方式

问题描述:

我有以下代码正在按预期方式工作,但当我请求使用下面显示的stopLocationUpdates方法删除位置更新时,我的onCompleteListener附件到removeLocationUpdates不会触发第一个请求,尽管位置更新根据需要停止。但是,在下一次请求时,会触发onCompleteListener回调。完成FusedLocationClientProvider的removeLocationUpdates时收到回调的最佳方式

/** 
* Provides access to the fused location provider API 
*/ 
private FusedLocationProviderClient mFusedLocationClient; 


/** 
* Removes location updates from the FusedLocationApi 
*/ 
private void stopLocationUpdates() { 
    if (!mRequestingLocationUpdates) { 
     // Updates were never requested. 
     return; 
    } 

    // Remove location request when activity is in a paused or stopped state. 
    mFusedLocationClient.removeLocationUpdates(mLocationCallback) 
      .addOnCompleteListener(this, new OnCompleteListener<Void>() { 
       @Override 
       public void onComplete(@NonNull Task<Void> task) { 
        mRequestingLocationUpdates = false; 
       } 
      }); 
} 

我没有50个repts。发表评论,所以我在这里写下我的评论。

如果添加.addOnFailureListener,它会在第二张照片上报告这样的错误吗?

W/System.err: com.google.android.gms.common.api.ApiException: 13: listener already unregistered 

RG

更新2017年4月17日:

新增.addOnFailureListener(getActivity(),新OnFailureListener()...)和.addOnSuccessListener(getActivity(),新OnFailureListener()。 ..),发现以下几点:

  1. 三个(包括初始addOnCompleteListener(getActivity(),新OnCompleteListener()...))听众在那里叫这个(第一)圣雷莫的无veLocationUpdate请求。

  2. 在第二次请求,addOnCompleteListener听者其中第一被叫(所有似乎确定),随后再onFailureListener听者与以下错误:

    W/System.err的:com.google.android.gms.common。 api.ApiException:13:听众已经注册的

看来,听众没有得到第一回调,直到第二个请求,并调用(是否堆积在一些堆栈?)(正确?) errorlistener告诉听众已经取消注册...

怪异......还是不是?

无论如何,我会提交一个bugreport,如果它尚未完成。

我使用v11.4.2 firebase,v11.4.2 play-services,v26.1.0 android.support和com.google.gms:google-services的v3.1.1。

RG如这里所述

+1

只是用 “LocationUpdates” 实施例中测试的: 设备上测试的两种(机器人5.0)和仿真器(Android 7.0),同样的错误。监听器不会被请求调用,但是2.请求调用onComplete和onFailure(报告已经注册的监听器)。 链接到错误报告: 我希望他们看到它... –