您好, 情况如下:
我正在开发一款Android应用程序,它作为运动追踪/导航应用程序 - 因此需要与GPS保持永久连接,并且设备保持唤醒状态。记录每秒完成。
多年来,当前解决方案的工作是由于wakelocks
保持设备唤醒。
Android 6.0+中的Doze模式使情况变得复杂,但这不是本例。
在华为设备上,可能有不同类型的优化。
以下是日志的一部分:
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位置)的建议?
正如我在开头写的那样,在除新华为外的所有其他设备上,这种系统多年来都可以正常工作。
编辑:注意,根据一位用户(已删除?)的评论,“白名单”应用程序在华为电池管理器中(标记为“受保护的应用程序”)对此问题没有影响。