功耗问题之过多唤醒源 wakeups

2019-10-09  本文已影响0人  程序员Android1

和你一起终身学习,这里是程序员 Android

本篇文章主要介绍 Android 开发中的 性能 部分知识点,通过阅读本篇文章,您将收获以下内容:

  1. 过多的唤醒源wakeups
  2. 如何fix 过多唤醒源问题
  3. 最佳实践

1.过多的唤醒源wakeups

WakeupsAlarmManager API 中的一种机制 ,它可让开发人员在指定时间设置警报,进而达到唤醒设备的目的。您的应用通过使用 RTC_WAKEUPELAPSED_REALTIME_WAKEUP 标志调用AlarmManager中的种set()方法来设置唤醒警报。当触发唤醒警报后,设备将退出低功耗模式,并在执行警报 onReceive()onAlarm() 方法的同时holdspartial wake lock 。如果唤醒警报触发过多,它们可能会耗尽设备的电池电量。

为了帮助您提高应用程序质量,Android会自动监视应用程序是否存在过多的唤醒警报,并以Android vitals的形式显示信息。有关如何收集数据的信息,请参阅Play控制台文档

如果您的应用过度唤醒设备,则可以使用此页面中的指导来诊断和解决问题。

2. 如何fix 过多唤醒源问题

AlarmManager 是在Android平台的早期版本中推出的,但随着时间的推移,以前需要很多 AlarmManager 的用例现在更好新功能提供服务(比如: WorkManager)。本部分包含有关减少唤醒警报的提示,但从长远来看,请考虑迁移您的应用以遵循第三节最佳实践部分中的建议。

确定您在应用中安排唤醒警报的位置,并减少触发这些警报的频率。这里有一些提示:

解决问题后,通过运行以下ADB 命令来验证唤醒警报是否按预期工作:

adb shell dumpsys alarm

该命令提供有关设备上警报系统服务状态的信息。有关更多信息,请参见 dumpsys

3. 最佳实践

仅当您的应用需要执行面向用户的操作(例如发布通知或提醒用户)时,才使用唤醒警报。有关AlarmManager最佳做法的列表,请参阅Scheduing Repeating Alarms

不要 AlarmManager
用于安排后台任务,尤其是重复的或网络后台任务。建议使用 WorkManager 执行后台任务,因为它具有以下优点:

有关更多信息,请参阅《后台处理指南》

不要 AlarmManager 用于安排仅在应用程序运行时才有效的计时操作(换句话说,当用户退出应用程序时应取消计时操作)。在这种情况下,请使用 Handler 该类,因为它更易于使用且效率更高。

至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

上一篇 下一篇

猜你喜欢

热点阅读