我有一个有服务和主要活动的应用程序。该服务运行倒计时器并向接收事件的活动发送偶数以在屏幕中绘制/刷新倒计时器。非常简单。现在我正在研究电池使用情况,这是非常高的
我打算将定时器抽搐从200ms减少到800ms,并将可运行的服务线程从500减少到800.这必须节省我怀疑的电池。
但是有几个问题:
我的主要问题:当屏幕锁定时(我有部分唤醒锁定),android会继续更新屏幕吗?如果是这样,我可以尝试在屏幕关闭时不发送刷新信息(如何检测屏幕被锁定?)。你觉得这有用吗?
您是否了解节省电池的编程或应用设计方面的最佳做法?我一直在寻找一个关于它的网络,但没有发现任何有趣的东西。
数据库是否打开废电池?
感谢
答案 0 :(得分:1)
1:您可以使用Alarmmanager来执行更新。 (看看这里:android appwidgets。
注意:如果设备在更新时(由updatePeriodMillis定义)处于睡眠状态,则设备将被唤醒以执行更新。如果每小时更新不超过一次,这可能不会导致电池寿命出现严重问题。但是,如果您需要更频繁地更新和/或在设备处于睡眠状态时无需更新,则可以根据不会唤醒设备的警报执行更新。为此,请使用AlarmManager使用AppWidgetProvider接收的Intent设置警报。将警报类型设置为ELAPSED_REALTIME或RTC,它仅在设备唤醒时发出警报。然后将updatePeriodMillis设置为零(“0”)。
这应该可用于小部件和“正常”活动。
2:我不知道正式文件。但你应该问自己以下问题:是否有必要经常更新?如果事件发生在5小时之后,您是否需要每秒钟或每分钟更新一次GUI?您可以级联更新:事件越接近,更新就越频繁。
3:我想不是。
答案 1 :(得分:0)
(取决于您的代码)您的服务将继续运行并发送消耗CPU周期和耗电的更新事件。无论您尝试更新哪些活动,它都会在屏幕锁定后暂停。屏幕关闭/屏幕有标准广播 - 只需在您的服务中接收它们并停止工作。或者,当要更新的活动接收到onPause()回调时停止服务,并在onResume()中重新启动它(如果没有焦点,则无需刷新活动)
参见1和grok android教程。基本思路:不做无用的东西。
没有。除非你在查询。