android - FusedLocationProviderClient RemoveLocationUpdatesAsync 任务未完成
问题描述
我正在实现 Xamarin Android 位置跟踪器并添加了以下代码来停止位置更新。
public Task StopAsync()
{
if(IsTracking)
{
IsTracking = false;
perviousStopTask = fusedLocationProviderClient.RemoveLocationUpdatesAsync(this);
}
return perviousStopTask;
}
在上面的方法中,我将任务返回从RemoveLocationUpdatesAsync
方法分配给perviousStopTask
并从方法返回StopAsync
。但是当我尝试等待这种StopAsync
方法时,它并没有完成。
解决方案
Xamarin LocationSample 项目将此问题归咎于 Google Play 服务。该示例当前在调用时不使用 await RemoveLocationUpdatesAsync
。
TODO:我们应该等待这个调用,但 Google Play 服务中似乎存在一个错误,即第一次调用 removeLocationUpdates 时,返回的 Android.Gms.Tasks.Task 从未真正完成,即使位置更新似乎已被删除并停止正在发生。现在,我们将只是开火并忘记作为一种解决方法。
推荐阅读
- visual-studio-code - Visual Studio Code 无法在虚拟机上启动
- java - Can anyone offer some help/advice on how to correctly create an animation?
- typescript - 在字典中使用静态方法存储实现的类:Typescript
- python - 如果与 Python API 一起使用,GAMS 能否在 Google Cloud 中运行
- ios - 滚动到底部时,iOS swift 应用程序在 TableView 上终止
- list - CSV 写入列表在 Python 2.7 中不起作用
- flutter - Flutter 列表查询
- python - 范围为“类”的 Pytest 夹具不适用于“setup_class”方法
- c# - 在操作方法中使用 HttpServerUtilityWrapper 时,获取为此对象定义的无参数构造函数
- ruby - 使用厨师安装kafka期间文件解压缩错误