gpt4 book ai didi

android - 华为 EMUI 4.0+ 上的电池优化(唤醒锁)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:02 29 4
gpt4 key购买 nike

美好的一天,情况:

我正在开发用作运动追踪器/导航应用程序的 Android 应用程序 - 因此它需要永久连接到 GPS 以及永久唤醒设备。每秒记录一次。

当前的解决方案多年来一直有效,这要归功于使设备保持唤醒状态的唤醒锁

Android 6.0+ 中的打瞌睡模式使情况变得复杂,但事实并非如此。

在华为设备上可能是不同类型的优化。

部分日志:

10-10 10:33:18.462 1014-384 D/PFW.HwPFWAppWakeLockPolicy:getUidWakeLock uid:10097 唤醒锁 >= 10 分钟
10-10 10:33:18.543 1014-384 D/PFW.HwPFWAppWakeLockPolicy:强制停止异常唤醒锁应用程序 uid:10097
10-10 10:33:18.558 1014-384 I/ActivityManager:强制停止 menion.android.locus appid=10097 user=0:来自 pid 1014

所以大约。 30 多分钟后,系统简单地判定该应用程序使用了过多的 wakelocks 并完全终止它的所有服务、历史记录,简单地 kill

关于这种行为的任何经验和任何建议,如何更好地完成这个简单的任务(屏幕关闭时永久记录 GPS 位置)?

正如我在开始时所写,在除新华为之外的所有其他设备上,这样的系统可以正常运行多年。

编辑:一位用户的评论(已删除?),华为电池管理器中的“白​​名单”应用程序(标记为“ protected 应用程序”)对此问题没有影响。

最佳答案

有两个华为系统应用程序可能会杀死用户应用程序以节省电量:

  • SystemManager (com.huawei.systemmanager) 会杀死所有在屏幕关闭后仍在运行的应用程序,除非它们在“ protected 应用程序”列表中。
  • PowerGenie (com.huawei.powergenie) 会杀死任何长时间持有唤醒锁的应用。

听起来您的应用程序正在被 PowerGenie 杀死。您可以利用 PowerGenie 的硬编码唤醒锁定标签白名单来避免这种情况。例如,如果您的唤醒锁的标签是“LocationManagerService”,它会被 PowerGenie 忽略,因为系统服务持有具有相同标签的唤醒锁并且 PowerGenie 已将其列入白名单。

关于android - 华为 EMUI 4.0+ 上的电池优化(唤醒锁),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39954822/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com