我正在实施Geo-fences。它工作得很好,但是当应用程序处于后台或前台时,它们的转换事件才会触发。我有一个接收geo-fences过渡事件的IntentService,但我的问题是这个intent服务只在应用程序运行时才接收更新。
该实现具有标准的LocationService,用于在运行时管理应用程序的地理围栏,然后是在检测到地理围栏转换时由操作系统通知的IntentService。
即使应用程序根本没有运行,您是否有任何接收转换的解决方案?
谢谢。
答案 0 :(得分:1)
Intent service应该启动一个工作线程,处理你计划做的任何事情,然后关闭它自己。在你的情况下,当应用程序运行时,服务基本上会产生,确实有效,然后自行关闭。
来自android docs
根据需要启动服务,使用工作线程依次处理每个Intent,并在失去工作时自行停止。
要解决这个问题,您可以通过扩展create类来Service自己的服务实现。
Checkout diff between Intent Service and Service
P.S:如果您提供了一些您尝试过的代码,可以直接告诉您,当应用程序未运行时,您的代码是否正常运行。
答案 1 :(得分:0)
我根据official documentation找到了解决方案。
建议的最小半径应介于100
到150
米之间,特别是如果您在位置请求中使用PRIORITY_LOW_POWER
或PRIORITY_BALANCED_POWER_ACCURACY
。
我遇到的问题是我将地理围栏保存到半径非常小的设备(例如20米),在这种情况下,当应用程序是设备时,设备根本没有检测到地理围栏转换事件没有跑(不在后台和前台)。