即使屏幕关闭,也要监控每个电池状态的变化

时间:2014-04-26 23:54:27

标签: android

我希望我的应用程序能够监控每个百分比的变化,并且即使在屏幕关闭时也能够执行一些代码。

是的,我知道这是一个坏主意,会不必要地耗尽电池。我正在给用户选择关闭它。此外,这是一个实验,而不是用户友好的功能。所以请不要回答我不应该监视每一个变化。

我也知道这是可能的,因为Tasker很好地实现了这一点。您可以设置个人资料以执行某些操作" Battery Changed"它在屏幕关闭时有效。 Tasker是如何做到的?

根据我的研究,我发现我可能需要使用AlarmManager和PowerManager类的部分唤醒锁。但是,我不知道如何最好地使用这些课程。我应该设置一个报警管理器来检查每一分钟的变化吗?在这样做时,塔斯克似乎没有吃太多电池,所以我想记住这一点。

当屏幕打开时,我有这个工作。我有一个服务,注册ACTION_BATTERY_CHANGED意图过滤器和接收器来实现我想要运行的代码。但是,当屏幕关闭时,代码不会运行,直到我醒来"通过打开屏幕启动设备。

1 个答案:

答案 0 :(得分:1)

  

Tasker是如何做到这一点的?

你必须问问Tasker的开发者。

  

我应该设置一个警报管理器来检查每一分钟的变化吗?

它不需要几乎那么频繁。您最多只能获得整数百分比的电池充电水平。每5-10分钟检查一次就足够了。你也可以考虑:

  • 让用户控制投票频率

  • 实施学习算法,尝试根据设备之前的行为方式确定良好的轮询间隔

  

我有一个服务,它注册一个ACTION_BATTERY_CHANGED意图过滤器和一个接收器来实现我想要运行的代码。

呸。没有附加值可以占用内存,等待电池电量超过。

您可以致电registerReceiver() IntentFilter ACTION_BATTERY_CHANGEDnull BroadcastReceiver来获取当前电池电量。 registerReceiver()将返回上一次ACTION_BATTERY_CHANGED广播。因此,再次,投票机制应该没问题。