【问题标题】:Android memory/battery usageAndroid 内存/电池使用情况
【发布时间】:2011-10-16 04:46:12
【问题描述】:

由于我无法在每天 0:00 运行服务,我决定每 50 秒运行一次(通过 AlarmManager)。我读到每 1 秒运行一次服务会耗尽电池。我以 1 秒的刷新率和 50 秒的刷新率尝试了我的程序。为此,我使用了各种应用程序来测量内存使用情况和 cpu 使用情况。结果如下:

内存使用情况:

  • Android 助推器

    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 来说真的很痛苦。或者不是吗?您对此有何看法?

【问题讨论】:

  • 我会说这完全取决于您的服务是做什么的。
  • 我同意。我的服务会刷新小部件上的数据和图像。

标签: android memory cpu-usage


【解决方案1】:

基本规则是,您做的越少,对电池的影响就越小。换句话说,您所做的一切都会减少电池电量。如果您每分钟更新一次,将其更改为每 2 分钟一次通常会使电池消耗减半。

但除此之外,没有一个数字可以给出“正确”的数量。您希望尽可能少地跑步,尽可能少地工作。

看看你所做的数字是很好的,它可以让你了解你的影响是什么。然而,它们也不是全部——例如,在一些常见的 CPU 上,简单地保持部分唤醒锁定会导致电池耗尽。

看待这一点的一个好方法是,我们希望我们设备上的电池至少能使用 N 天,其中 N 至少是 1,实际上我们希望它不止 1。如果设备没有被使用——它的屏幕关闭——它仍在后台做一些事情,耗尽电池:电话收音机正在运行,可能有些事情正在将新电子邮件等同步到设备上,等等.

如果设备没有完成这项工作,它将持续数天、数天、数天。你可以自己看到:打开飞行模式,确保后台没有愚蠢的应用程序在做事,看看你的电池能用多久。很容易就是一个星期。

因此,您在后台所做的每一件小事本身都不是问题。它是这项工作的总和,在一个我们希望收费运行数天的世界里。基本设备充电运行的时间越长,你的每一项小工作就越会缩短电池寿命,因为你有更多的时间来运行和耗尽它。

最终,将一些工作安排为每分钟或更长时间进行一次会缩短用户的电池寿命。多少取决于很多因素:硬件的电源行为、用户通常可以在充电后运行多长时间、您每次运行的时间、您正在做的工作类型。

我绝对会推荐的一件事就是在您自己的设备上自己测试这个应用程序。从基线开始:让您的设备不使用,看看它可以持续多久。确保没有其他可能影响其生命的第三方应用程序(从 Android 3.1 开始,您可以强制停止所有这些应用程序以确保它们不会运行)。考虑关闭电子邮件同步等,以消除图片中的噪音。

现在让您的应用以您认为应该的量运行,看看它会减少多少电池寿命。会有一些,只是多少的问题。

此外,当您执行这些操作时,您希望专注于在合理运行的系统上使用电池可以持续的最长时间以及您的应用如何影响这一点。用户的电池使用时间越长,您的应用对它的影响就越大,因此这些用户更有可能不满意并在 Market 上给出差评。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2015-03-28
    相关资源
    最近更新 更多