由于我无法在每天0:00运行服务,所以我决定每50秒运行一次(通过AlarmManager)。我读到每1秒运行一次服务会导致电池耗尽。我以1秒的刷新率和50秒的刷新率试用了我的程序。为此,我使用各种应用程序来测量内存使用情况和CPU使用情况。结果如下:
内存使用情况:
Android Booster
1秒:5.1 - 7.5 MB
50秒:5.5-7.2MB
内存使用/内存管理器
1秒:24.5MB
50秒:23MB
使用时间表
1秒:24MB
50秒:22.7 MB
看门狗任务管理器
1秒:14.6MB
50秒:12-14MB
Android智能助理:
1秒:4MB
50秒:7MB
CPU使用率
使用时间表
1秒:2%
50秒:0%
看门狗任务管理器
1秒:1.3%-1.9%
50秒:0.1%
Android智能助理:
1秒:2%-3%
50秒:0.4%-2%
总而言之,我们可以说内存使用率没有改变,但cpu使用情况发生了巨大变化。由于所有使用的应用程序显示不同的数据,我不能确定我的应用程序使用了多少内存/ CPU但这个小调查显示我每1秒运行一次服务确实是一个痛苦的cpu屁股。或者不是吗?你对此有何看法?
答案 0 :(得分:4)
基本规则是,你做的越少,对电池的影响越小。换句话说,你所做的一切都会减少电池电量。如果您每分钟更新一次,将其更改为每2分钟通常可以减少电池消耗。
但除此之外,没有一个数字可以给出“正确”数量。你希望尽可能少地运行,尽可能少地工作。
看看你做的数字是好的,它会让你知道你的影响是什么。然而,它们也不是全部 - 例如在一些常见的CPU上,仅仅保持部分唤醒锁定会导致电池耗尽。
一个很好的方法是我们希望设备上的电池至少持续N天,其中N至少为1天,而且我们真的希望它不止一个。如果设备没有被使用 - 它的屏幕关闭 - 它仍在背景中耗尽电池:电话收音机正在运行,可能有些东西正在将新的电子邮件同步到设备上等等
如果设备没有做这项工作,它将持续数天,数天和数天。你可以自己看看:打开飞机模式,确保没有愚蠢的应用程序仍在后台处理东西,看看你的电池持续多长时间。它可以很容易地成为一周。
所以你在后台做的每件小事本身都不是问题。它是这项工作的总和,在我们想要充电几天的世界里。基本设备在充电时运行的时间越长,您的每一小部分工作都会缩短电池寿命,因为您有更多的时间来运行和耗尽它。
最终,安排一些工作每分钟或更长时间将减少用户的电池寿命。多少取决于很多事情:硬件的电源行为,用户通常可以在充电时运行多长时间,每次运行多长时间,以及您正在进行的工作类型。
我肯定会建议您在自己的设备上自行测试此应用。从基线开始:让您的设备无需使用,并查看它持续多长时间。一定不要有其他可能影响其生命的第三方应用程序(从Android 3.1开始,你可以强制停止所有这些应用程序,以确保它们不会运行)。考虑关闭电子邮件的同步等,以消除图片中的噪音。
现在让您的应用程序以您认为应该的数量运行,并查看它会减少多少电池寿命。这将是一些,这只是一个多少的问题。
此外,当您执行这些操作时,您希望专注于在合理运行的系统上持续使用电池的最长时间以及应用程序如何影响该系统。用户电池持续的时间越长,您的应用就越会影响它,因此这些人更有可能不满意并在市场上给予差评。