我有以下代码按预期工作,但是当我请求使用如下所示的 stopLocationUpdates
方法删除位置更新时,尽管位置更新已按要求停止,但我附加到 onCompleteListener
的 removeLocationUpdates
不会在第一个请求时触发。但是,在下一个请求时,会触发 onCompleteListener
回调。
/**
* 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 个报告。评论,所以我在这里写我的评论。
如果你添加一个.addOnFailureListener,它会在第二次拍摄时报告这样的错误吗?
W/System.err: com.google.android.gms.common.api.ApiException: 13: listener already unregistered
RG
2017.04.17 更新:
添加 .addOnFailureListener(getActivity(), new OnFailureListener()...) 和 .addOnSuccessListener(getActivity(), new OnFailureListener()...) 并发现以下内容:
W/System.err: com.google.android.gms.common.api.ApiException: 13: 监听器已经取消注册
似乎监听器在第二个请求之前没有得到第一个回调(它是否堆积在某个堆栈上?),并且它调用(正确?)错误监听器来告诉监听器已经取消注册......
奇怪... 或不?
无论如何,如果尚未完成,我将提交错误报告。
我使用 com.google.gms:google-services 的 v11.4.2 firebase、v11.4.2 play-services、v26.1.0 android.support 和 v3.1.1。
RG
关于java - 在 `removeLocationUpdates` 的 `FusedLocationClientProvider` 完成时接收回调的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46401266/