美好的一天,情况:
我正在开发用作运动追踪器/导航应用程序的 Android 应用程序 - 因此它需要永久连接到 GPS 以及永久唤醒设备。每秒进行一次录制。
多年来有效的当前解决方案要归功于wakelocks
保持设备唤醒。
Android 6.0+ 中的打盹模式使情况复杂化,但事实并非如此。
在华为设备上可能是不同类型的优化。
这是日志的一部分:
10-10 10:33:18.462 1014-384 D/PFW.HwPFWAppWakeLockPolicy: getUidWakeLock uid: 10097 wakelock >= 10 mins
10-10 10:33:18.543 1014-384 D/PFW.HwPFWAppWakeLockPolicy: force stop abnormal wakelock app uid: 10097
10-10 10:33:18.558 1014-384 I/ActivityManager: Force stopping menion.android.locus appid=10097 user=0: from pid 1014
所以大约之后。30 多分钟,系统简单地决定应用程序使用过多,wakelocks
并完全终止所有服务,历史,简单kill
。
对此行为的任何经验和任何建议,如何更好地完成这个简单的任务(屏幕关闭时永久记录 GPS 位置)?
正如我在开始时写的那样,在除新华为之外的所有其他设备上,这样的系统可以正常工作多年。
编辑:一位用户评论后的注释(删除?),华为电池管理器中的“白名单”应用程序(标记为“受保护的应用程序”)对此问题没有影响。