我已经测试了一个应用程序多个月,该应用程序使用Android Geofencing API来跟踪进入/退出事件。它的运行表现几乎完美,但有时地理围栏简单地不触发,这显然不是由于我的应用程序未能保持地理围栏加载导致的。因为每当地理围栏失败时,立即打开另一个完全独立的GPS应用程序(例如谷歌地图)会使我的应用程序触发它未能触发的地理围栏事件。
我通过BOOT_COMPLETED和location.PROVIDER_CHANGED上的广播接收器处理围栏的重新加载。围栏半径相当大,超过1英里。该应用程序没有被挂起或处于电源管理状态。用户和个人测试表明,这绝不是手动禁用位置服务引起的。不存在停留并且围栏永不过期。
正如我所说,99%的时间地理围栏工作得非常完美,而其他1%只需打开另一个GPS应用程序即可立即触发围栏。我正在尝试找出可以消除这1%故障的方法,希望能避免不断轮询位置(这样做会使地理围栏API变得毫无意义)。
更新:(样本测试数量有限,只有1个)在运行Android Oreo的设备上,这个问题似乎已经恶化到除非启动第二个GPS应用程序,否则地理围栏永远不会被触发...
我通过BOOT_COMPLETED和location.PROVIDER_CHANGED上的广播接收器处理围栏的重新加载。围栏半径相当大,超过1英里。该应用程序没有被挂起或处于电源管理状态。用户和个人测试表明,这绝不是手动禁用位置服务引起的。不存在停留并且围栏永不过期。
正如我所说,99%的时间地理围栏工作得非常完美,而其他1%只需打开另一个GPS应用程序即可立即触发围栏。我正在尝试找出可以消除这1%故障的方法,希望能避免不断轮询位置(这样做会使地理围栏API变得毫无意义)。
更新:(样本测试数量有限,只有1个)在运行Android Oreo的设备上,这个问题似乎已经恶化到除非启动第二个GPS应用程序,否则地理围栏永远不会被触发...