首页 > 解决方案 > FusedLocationProviderClient RemoveLocationUpdatesAsync 任务未完成

问题描述

我正在实现 Xamarin Android 位置跟踪器并添加了以下代码来停止位置更新。

    public Task StopAsync()
    {
        if(IsTracking)
        {
            IsTracking = false;
            perviousStopTask = fusedLocationProviderClient.RemoveLocationUpdatesAsync(this);
        }

        return perviousStopTask;
    }

在上面的方法中,我将任务返回从RemoveLocationUpdatesAsync方法分配给perviousStopTask并从方法返回StopAsync。但是当我尝试等待这种StopAsync方法时,它并没有完成。

标签: androidxamarinxamarin.androidtaskfusedlocationproviderclient

解决方案


Xamarin LocationSample 项目将此问题归咎于 Google Play 服务。该示例当前在调用时不使用 await RemoveLocationUpdatesAsync

TODO:我们应该等待这个调用,但 Google Play 服务中似乎存在一个错误,即第一次调用 removeLocationUpdates 时,返回的 Android.Gms.Tasks.Task 从未真正完成,即使位置更新似乎已被删除并停止正在发生。现在,我们将只是开火并忘记作为一种解决方法。


推荐阅读