【问题标题】:My service notification makes a battery drain我的服务通知导致电池耗尽
【发布时间】:2013-08-21 20:27:05
【问题描述】:

我有一个显示电池电量的通知。通知在服务中,因为即使应用程序关闭,服务仍然运行并且它可以显示电池百分比。我注意到当通知处于活动状态时电池电量下降得更快。有没有办法解决这个问题?

编辑: onCreate 服务

@Override
    public void onCreate(){
        super.onCreate();
        mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        new IntentFilter(Intent.ACTION_BATTERY_CHANGED);    
    }

在清单中我也写了这个ACTION_BATTERY_CHANGED

【问题讨论】:

  • 我认为这很正常,因为您不断在后台运行服务,它会消耗相当长的电池寿命。顺便说一句,为什么会使用通知显示电池电量?电池状态是不是不够用?
  • 因为我的应用程序显示(我的意思是在 MainActivity 内部)一些电池信息,并且在设置中您可以激活带有电池电量和温度的永久通知。这是其他应用程序所做的:) 但是,是的,吃电池。这是一个矛盾!这是一个省电应用程序!所以你觉得没有别的办法了吗?
  • 您查询 BatteryManager 的频率如何?我会坚持建议的方式,请参阅链接:developer.android.com/training/monitoring-device-state/…
  • 嗯每次收到broadcastreceiver的通知。

标签: android service android-notifications batterylevel


【解决方案1】:

理想情况下,您只想在电池状态发生变化时更新视图。您是否尝试过监控此广播操作而不是轮询电池电量?

http://developer.android.com/reference/android/content/Intent.html#ACTION_BATTERY_CHANGED

这样你只有在状态改变时才会执行操作,而不是一直在后台执行。

【讨论】:

  • 我已经使用了电池更换意图。但似乎更新并不总是在电池电量变化时更新,而且(我不知道为什么)每 10 秒更新一次。但是..我从来没有写过这样的东西。
  • 看起来电池更换事件会定期发生,无论电池状态如何变化。这里有一个使用轮询作为解决方法的潜在解决方案:stackoverflow.com/questions/7624882/…
  • 那么你认为决定更新的时间间隔更好吗?
  • 如果我在清单和 java 服务中编写广播 ACTION_BATTERY_CHANGED 可能会出现问题?
  • 我会说是的,你肯定知道间隔,当你进入市场时,这会让你的生活更轻松。从一些阅读来看,这个更新间隔似乎因设备而异。是的,碎片化... :-/
猜你喜欢
  • 1970-01-01
  • 2015-01-18
  • 2017-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-04
  • 2013-09-10
相关资源
最近更新 更多