减少Android服务电池消耗的提示?

时间:2014-06-06 21:04:42

标签: android android-service

我最近写了一个应用程序,我很失望服务消耗了多少电池。我昨天打电话找我的电池是9%;我检查了电池的android系统静态,发现我的应用程序负责60%的电池排放

我的问题是,有什么可以减少运行的应用程序的电池使用量,然后sleep s 60秒?该服务正在从SQLite数据库中读取;我可以缓存数据,但这真的可以解释这么多的电池使用量吗?什么是减少服务中电池排水的标准方法?

1 个答案:

答案 0 :(得分:1)

您应该考虑使用AlarmManager来安排在必要时调用您的应用或服务。这比当前的唤醒锁定方法有很大的优势,因为即使是部分唤醒锁定也会使CPU保持运行。 AlarmManager警报甚至可以在CPU休眠状态下唤醒手机。

基本上,摆脱现有的唤醒锁定并安排一个AlarmManager警报 - 如果需要的话,可以每分钟重复一次,如果需要的话,可以唤醒设备并发送消息。

AlarmManager本身将在调用onReceive()方法时取出唤醒锁定以通知您警报,并在onReceive()结束时放弃它,让手机重新进入深度睡眠状态。

请注意,这意味着如果您想进行扩展工作 - 例如。在后台线程上触发一些东西 - 你可能想在onReceive()中取出你自己的唤醒锁定,并在你的工作完成时放弃它,否则手机可能会在你正在工作的时候进入睡眠状态

这在the AlarmManager docs中得到了很好的解释,但我见过的最好的解释是马克墨菲的The Busy Coder's Guide to Android Development;他还提供a library for exactly this pattern on Github。绝对值得一看。