【问题标题】:Do android broadcast receivers consume battery life?android广播接收器会消耗电池寿命吗?
【发布时间】:2011-05-31 18:45:46
【问题描述】:

我有两个接收器正在监听android.intent.action.BOOT_COMPLETEDandroid.intent.action.PACKAGE_REPLACED。我想知道它们导致我的手机消耗了多少电池寿命,因为它们导致我的应用程序现在不断运行。

【问题讨论】:

  • 如果您不需要了解每个包更改,那么您可以缩小意图过滤器的范围以仅捕获您感兴趣的包,从而很少启动您的应用进程。
  • 如果我只抓到我的包裹,该应用会一直出现在应用杀手中还是仅在接收广播时出现?
  • 任务杀手通常是衡量某事是否实际运行的一个很差的指标。 Android缓存进程;任务杀手倾向于报告这些进程并将它们的存在归咎于在其中运行的最后一个应用程序代码。您可以在 DDMS 中看到类似的行为。
  • @CommonsWare 我同意,但是,运行我正在创建的应用程序的普通用户现在确实意识到了这一点。即使我试图教育他们,不幸的是大多数人都不会听。一种失败的局面,因为大多数人没有意识到应用程序不应该被那样杀死。

标签: android broadcastreceiver power-management


【解决方案1】:

广播接收器本身不会直接消耗太多电池寿命。 BOOT_COMPLETED 发生一次; PACKAGE_REPLACED 仅在应用程序升级时发生。这些人可能平均每天发生一个事件。

现在,如果这些广播接收器执行其他操作,例如启动服务, 可能会对电池产生重大影响...但这是您的服务的问题,而不是接收器本身的问题。

【讨论】:

  • 如果我在应用程序中声明了多个已注册的广播接收器,并且每个接收器都在它们注册的位置监听所需的内容,该怎么办?例如,多个接收器可能会监听音量变化、电池变化……这会不会消耗很多电量?我想象一个等待广播的while循环,对于每个接收器,我想象一个循环,所以多个接收器,多个循环。不知道它是否是这样工作的。
  • @DADi590:“会不会很耗电?” - 如果这与您有关,请在您的应用程序中做更有效的工作,避免“多个接收器可能会监听音量变化,电池变化”。例如,您可以有一个SystemRepository,它是监听系统事件的一个地方,其中SystemRepository 通过应用内反应式API 重新发布这些事件(例如,协程SharedFlow、RxJava PublishSubject、@987654327 @)。这将比注册同一广播 N 次更有效。不过,两者都不应该对权力产生重大影响。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多