iOS和Android上的appcelerator应用程序需要每5秒获取一次最新的地理位置并将该位置发送回服务器。
当应用程序打开并且屏幕打开时,它运行良好,但是当屏幕关闭时,两个平台上的地理定位对象似乎都不会经常更新 - 所以即使我每5分钟获得一次地理定位秒它不准确。
如何在电话屏幕关闭时定期更新地理位置?
答案 0 :(得分:1)
您应该在前台Intent Service
中请求地理位置,在其他情况下,它将无法在Android O上运行,准确度为5秒。
此外,您应该使用WakeLock
来阻止睡眠模式。
答案 1 :(得分:0)
您是否真的想在设备关闭时每隔5秒获取一次该位置?这将很快耗尽电池。我认为每5到10分钟会更合适。甚至可能是过度的。
如果您真正需要的是定期更新定位,我建议采用以下两种解决方案:
注意:对于android,我们发现操作系统会定期终止我们的服务,虽然它总是安排它重新启动,但有时,它会安排很长时间(例如8小时)。我们最终使用AlarmService(https://github.com/benbahrenburg/benCoding.AlarmManager)定期启动我们的后台代码(例如每30分钟一次),后台代码会在大约25分钟后自行关闭。
此外,如果您关心在重新启动设备后重新启动服务,则应考虑使用BootReceiver(https://github.com/benbahrenburg/benCoding.Android.Tools/)重新启动AlarmService。
显然,Ben Bahrenburg的优秀模块很有道具!
答案 2 :(得分:0)
在7.2.0
中看起来有一个解决方案https://developer.mozilla.org/en/DOM/element.addEventListener
还有第三方模块也希望解决这个问题
https://jira.appcelerator.org/browse/TIMOB-16066
我还没试过呢