【发布时间】:2017-11-03 08:41:57
【问题描述】:
使用 google location.getlatitiude 和 location.getlongitude by
location = locationManager.getLastKnownLocation(locationProvider);
Latitude = location.getLatitude();
Longitude = location.getLongitude();
这是在每 5 秒触发一次的循环运行中完成的。到目前为止一切顺利。
当我“暂停”应用程序时(单击后退按钮使应用程序在后台运行),上述调用不会获取新位置(它们会继续返回暂停前的最后经度和纬度)。
我知道 runnable 仍在触发,因为我还在 runnable 期间写入 Web 数据库并且数据库正在被命中和更新(只是具有停滞的纬度和经度值)。
一旦应用程序取消暂停/恢复并变得可见,经度和纬度读数就会恢复并正确更新。
location、locationManager 和 locationProvider 是 Runnable 之外的全局变量,并在设置 runnable 运行之前创建和验证,因此在应用暂停时创建它们不是问题。
关于为什么暂停会导致这种情况的任何想法?我已经在 2 部不同的手机上进行了测试。两者结果相同。有什么方法可以告诉位置或位置管理器即使在应用暂停时也能继续工作?
【问题讨论】:
-
你尝试过 LocationListener 类吗?
-
你在设备或模拟器上测试过吗?如果是设备,请同时指定操作系统。
-
设备。 Galaxy Note 5 和 Galaxy Note 8 在这个阶段。
-
LocationListener 喜欢代码 [link]stackoverflow.com/questions/42218419/… ?获取实际纬度和经度的内部代码与我的代码相同,所以我不认为听众会有所帮助吗?我的问题不是位置代码触发,而是它没有返回正确的值。我现在将尝试设置一个 locationlistener 来检查它是否有帮助。
-
LocationListener 似乎从未触发过。我什至尝试使用此代码 [link]github.com/codepath/android_guides/issues/220 创建后台服务,但一旦应用程序暂停,它也会停止更新。很奇怪。服务应该在应用处于任何状态时运行。