2

我有以下代碼正在按預期方式工作,但當我請求使用下面顯示的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; 
       } 
      }); 
} 

回答

0

我沒有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(報告已經註冊的監聽器)。 鏈接到錯誤報告: 我希望他們看到它... –