我希望我的应用程序能够监控每个百分比的变化,并且即使在屏幕关闭时也能够执行一些代码。
是的,我知道这是一个坏主意,会不必要地耗尽电池。我正在给用户选择关闭它。此外,这是一个实验,而不是用户友好的功能。所以请不要回答我不应该监视每一个变化。
我也知道这是可能的,因为Tasker很好地实现了这一点。您可以设置个人资料以执行某些操作" Battery Changed"它在屏幕关闭时有效。 Tasker是如何做到的?
根据我的研究,我发现我可能需要使用AlarmManager和PowerManager类的部分唤醒锁。但是,我不知道如何最好地使用这些课程。我应该设置一个报警管理器来检查每一分钟的变化吗?在这样做时,塔斯克似乎没有吃太多电池,所以我想记住这一点。
当屏幕打开时,我有这个工作。我有一个服务,注册ACTION_BATTERY_CHANGED意图过滤器和接收器来实现我想要运行的代码。但是,当屏幕关闭时,代码不会运行,直到我醒来"通过打开屏幕启动设备。
答案 0 :(得分:1)
Tasker是如何做到这一点的?
你必须问问Tasker的开发者。
我应该设置一个警报管理器来检查每一分钟的变化吗?
它不需要几乎那么频繁。您最多只能获得整数百分比的电池充电水平。每5-10分钟检查一次就足够了。你也可以考虑:
让用户控制投票频率
实施学习算法,尝试根据设备之前的行为方式确定良好的轮询间隔
我有一个服务,它注册一个ACTION_BATTERY_CHANGED意图过滤器和一个接收器来实现我想要运行的代码。
呸。没有附加值可以占用内存,等待电池电量超过。
您可以致电registerReceiver()
IntentFilter
ACTION_BATTERY_CHANGED
和null
BroadcastReceiver
来获取当前电池电量。 registerReceiver()
将返回上一次ACTION_BATTERY_CHANGED
广播。因此,再次,投票机制应该没问题。