为啥我的 Android 应用程序偶尔会非常快地耗尽电池电量?

Posted

技术标签:

【中文标题】为啥我的 Android 应用程序偶尔会非常快地耗尽电池电量?【英文标题】:Why might my android app occasionally drain battery extremely fast?为什么我的 Android 应用程序偶尔会非常快地耗尽电池电量? 【发布时间】:2013-12-10 19:58:16 【问题描述】:

我的应用程序的多个用户报告说,当我的应用程序在后台运行时,他们的电池电量以每分钟 1% 左右的速度耗尽。即使在用户出现错误的同一设备型号上使用相同的帐户凭据,我也无法复制此问题。重新安装应用程序显然不能解决问题,而且似乎没有任何特定的 android 版本或设备与该问题相关联。我收到的所有报告都是运行 4.x 的三星设备,但这也相当代表我的整体用户群。我的后台服务监听 GCM 消息和联系人列表更改,并使用 ScheduledExecutorService 大约每小时触发一次 http 请求。

我还应该注意,我没有在应用程序中使用任何唤醒锁。

我想知道是否有人对什么样的错误可能会导致这样的问题有任何想法,或者甚至有什么工具或方法可以有效地缩小我的问题范围。

【问题讨论】:

我猜有些代码是连续执行的,也许是在失败的情况下,因为它不会一直发生。 后台服务是循环运行还是只是在等待一个Intent? 任何不断重复的循环或函数调用? @mttdbrd 后台运行的一切要么在等待意图,要么由 ScheduledExecutorService 触发。 你要求他们卸载并检查以确保它不是别的东西,对吧? 【参考方案1】:

大约有多少百分比的用户报告此问题?如果您在运行 4.x 的三星设备上尝试过它并且没有遇到问题,那么除了您的代码之外,一定有问题。

【讨论】:

在大约 5000 名用户中,我听到了大约 15 份关于此错误的报告,其中包括一些拥有多个设备的企业。我假设每个举报更多的人都只是删除了该应用程序。【参考方案2】:

如果我是你,我会

    在关闭 wifi 的情况下开始测试。

    在simulating high latency (Charles 有 30 天的免费试用期)

    并添加一些代码用于监控battery level and charging state。

对不起,我没有更好的答案。

【讨论】:

以上是关于为啥我的 Android 应用程序偶尔会非常快地耗尽电池电量?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 glGetProgramiv GL_ACTIVE_UNIFORMS 偶尔会返回垃圾并使我的程序崩溃?

偶尔会遇到长时间的垃圾收集延迟,为啥?

将我的 android 应用程序签名为系统应用程序

为啥 GCM 推送通知会重复?

Android EditText不是会自动弹出软键盘的吗。为啥我的不会。

为啥构建后步骤 (xcopy) 偶尔会在 TeamCity 构建中以代码 2 退出?