在我的Android应用中,无论手机是否处于活动状态,我都需要每分钟执行一些代码。
(对于那些好奇的人来说,该应用程序适用于个人项目,一个“说话”时钟,如果该时间有相应的声音文件需要检查每一分钟。这不是我打算发布到世界的东西,所以电池注意事项没有发挥作用。)
我目前的做法是使用Timer.scheduleAtFixedRate()
来安排任务。
每当我查看应用程序时,这似乎都有效,并偶尔与它进行交互以防止屏幕消隐,但如果手机关闭屏幕以节省电量,似乎我的电话偶尔会发生。
我尝试将间隔设置为每30秒,但即便如此,我似乎也错过了几分钟。在Android上使用Timer有特定的注意事项吗?有没有更好的方法来实现我的需求?
答案 0 :(得分:2)
问题:你是否100%绝对确定你需要每分钟都这样做?听起来我觉得你会疯狂地占用电池,并会得到一些不满意的用户。
但如果您回答yes
该问题:
暂停活动后,系统无法保证其中的任何内容(包括您的任务)将继续运行;这样一旦系统需要几兆字节来做任何事情,它就会扼杀你的活动并停止你的计时器。
您应该在服务中实现计时器/任务。服务被系统杀死的可能性要小得多,你可能会问,如果系统需要杀死它以便尽快重新创建它。
答案 1 :(得分:1)