首页 > 解决方案 > Android 定期 Worker 停止重复,并且地理围栏在几天后停止触发

问题描述

我正在开发一个 Android (Kotlin) 应用程序,管理员可以在其中注册家属并随时监控他们的位置和设备状态。此外,这些管理员可以在地图上标记他们希望在其家属进入或离开这些位置时得到通知的地方。为了实现这一点,我使用地理围栏进行位置进入/退出监控,以及重复 10 到 20 分钟的独特周期性工作。

这个工人做什么:

我还为 BOOT_COMPLETED 事件添加了一个广播接收器,负责从工作人员本地保存的位置重新创建地理围栏,因为重新启动后系统不会重新创建地理围栏。系统会自动重启worker。

为了帮助调试,我使用 Room 创建了一个简单的日志系统,该系统记录每次执行 Worker 时、创建/删除地理围栏时、接收到 BOOT_COMPLETED 等事件并发生地理围栏转换。

我遇到的问题是这个工人停止重复自己,通常在 3 天左右。如果服务器注意到一个依赖者在一小时内没有发送任何更新,它会触发“Revive”推送通知。该应用程序使用它来重新启动 Periodic Worker。即使应用程序成功接收并重新启动工作,它也只会重复大约 1 小时,然后再次停止。

同时,地理围栏转换停止触发。除了在服务器上找到新地点时负责创建地理围栏之外,我找不到地理围栏触发器和定期工作人员之间的任何关系。通过分析日志,地理围栏是在设备重启后正确创建的,但它们不会触发。

如果用户打开应用程序,工作人员将重新创建,并以 2-3 天的间隔返回重复,并且地理围栏开始正确触发。

有没有人遇到过工人或地理围栏的类似问题并设法提出解决方案?

标签: androidbackground-processandroid-workmanagerandroid-geofence

解决方案


推荐阅读