我有以下代码按预期工作但是当我请求使用下面显示的 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()...) 并发现以下内容:
三个监听器(包括初始的 addOnCompleteListener(getActivity(), new OnCompleteListener()...))都没有在此(第一个)removeLocationUpdate 请求上调用。
在第二个请求中,首先调用 addOnCompleteListener 监听器(一切似乎都正常),然后调用 onFailureListener 监听器并出现以下错误:
W/System.err: com.google.android.gms.common.api.ApiException: 13: listener already unregistered
似乎监听器直到第二个请求才得到第一个回调(它是否堆积在某个堆栈上?),并且它调用(正确?)错误监听器以告知监听器已经取消注册...
很奇怪……不奇怪吗?
无论如何我都会提交一个错误报告,如果它还没有完成的话。
我使用 v11.4.2 firebase、v11.4.2 play-services、v26.1.0 android.support 和 v3.1.1 of com.google.gms:google-services。
RG
关于java - 在 `removeLocationUpdates` 的 `FusedLocationClientProvider` 完成时接收回调的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46401266/