【问题标题】:What is the best way to receive a callback on completion of `removeLocationUpdates` of `FusedLocationClientProvider`在`FusedLocationClientProvider`的`removeLocationUpdates`完成时接收回调的最佳方式是什么
【发布时间】:2018-03-06 04:34:24
【问题描述】:

我的以下代码按预期工作,但是当我请求使用下面显示的 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;
                }
            });
}

【问题讨论】:

    标签: java android google-maps-android-api-2 fusedlocationproviderapi


    【解决方案1】:

    我没有 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()...) 发现如下:

    1. 在此(第一个)removeLocationUpdate 请求上调用的三个(包括初始 addOnCompleteListener(getActivity()、new OnCompleteListener()...))侦听器中没有一个。

    2. 在第二个请求中,首先调用 addOnCompleteListener 侦听器(一切似乎都正常),然后调用 onFailureListener 侦听器,但出现以下错误:

      W/System.err:com.google.android.gms.common.api.ApiException:13:侦听器已取消注册

    似乎监听器直到第二个请求才获得第一个回调(它是否堆积在某个堆栈上?),它调用(正确地?)errorlistener来告诉监听器已经取消注册......

    奇怪...还是不?

    无论如何我都会提交一个错误报告,如果它还没有完成的话。

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

    RG

    【讨论】:

    • 刚刚使用此处描述的“LocationUpdates”示例对此进行了测试:github.com/googlesamples/android-play-location> 在设备(android 5.0)和模拟器(android 7.0)上都进行了测试,同样的行为不端。侦听器不会在 1. 请求时被调用,但 2. 请求会同时调用 onComplete 和 onFailure (报告已经未注册的侦听器)。错误报告链接:issuetracker.google.com/issues/67427965>我希望他们能看到...
    猜你喜欢
    • 2020-02-26
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多