首页 文章

如何在Codename One中频繁进行背景GPS更新?

提问于
浏览
1

我正在编写一个需要使用GPS进行频繁位置检查的应用 . 它需要每隔10-15秒获取当前位置,然后将其写入数据库(数据库部分与此问题无关,只是想把它扔出去) . 我面临的问题是我找不到合适的方法来实现这一目标 . 我尝试了几件事:

  • 使用 LocationManager.getBackgroundLocationListener() 似乎永远不会起作用 . 我做错了但无论如何,我都不能满足我的需求 .

  • 我尝试过使用Background Fetch,但它在Android上才可靠 . iOS上的频率是完全随机的,所以这也不能满足我的需求 .

  • 我尝试过刚开始一个新的线程,每隔10-15秒获取一次当前位置,但这仅在屏幕打开且正在使用应用程序时才有效 . 这不符合我的需求,因为我需要确保在切换到其他应用程序时继续获取位置更新 .

有没有人对替代方法有任何建议来解决这个问题?请注意,我没有objective-c的背景知识,因此像Codename One这样的跨平台解决方案实际上是我唯一的选择 .

1 回答

  • 1

    在这种情况下,后台提取不是正确的选择,因为iOS希望您声明您实际在做什么 . iOS中禁止您尝试执行的操作,也可能在Android中存在问题 .

    在后台获取位置数据(特别是在此分辨率下)会产生严重的隐私隐患,因此我怀疑它是否有效 . 在前台执行此操作应该可以正常工作以允许导航等用例,但在后台可能会出现问题 .

    位置和网络是大型电池耗尽活动,这进一步加剧了这种情况 . 因此,您可以对这些API应用的分辨率有限制 . 背景的一个常见用例是地理围栏,它允许您跟踪用户何时接近重要的兴趣点 . 此API存在的原因是为了降低轮询成本并将位置使用降至最低 .

    请注意,Android和iOS都提供了检测用户电池使用情况的工具,这些可能会影响行为不当的应用 .

相关问题