在Android中使用Timer.scheduleAtFixedRate()

时间:2012-08-15 14:47:58

标签: java android timer

在我的Android应用中,无论手机是否处于活动状态,我都需要每分钟执行一些代码。

(对于那些好奇的人来说,该应用程序适用于个人项目,一个“说话”时钟,如果该时间有相应的声音文件需要检查每一分钟。这不是我打算发布到世界的东西,所以电池注意事项没有发挥作用。)

我目前的做法是使用Timer.scheduleAtFixedRate()来安排任务。

每当我查看应用程序时,这似乎都有效,并偶尔与它进行交互以防止屏幕消隐,但如果手机关闭屏幕以节省电量,似乎我的电话偶尔会发生。

我尝试将间隔设置为每30秒,但即便如此,我似乎也错过了几分钟。在Android上使用Timer有特定的注意事项吗?有没有更好的方法来实现我的需求?

2 个答案:

答案 0 :(得分:2)

问题:你是否100%绝对确定你需要每分钟都这样做?听起来我觉得你会疯狂地占用电池,并会得到一些不满意的用户。

但如果您回答yes该问题: 暂停活动后,系统无法保证其中的任何内容(包括您的任务)将继续运行;这样一旦系统需要几兆字节来做任何事情,它就会扼杀你的活动并停止你的计时器。

您应该在服务中实现计时器/任务。服务被系统杀死的可能性要小得多,你可能会问,如果系统需要杀死它以便尽快重新创建它。

答案 1 :(得分:1)

您是否尝试过使用AlarmManager,即使手机处于待机模式或关闭,这也可以让您每隔X个时间执行一项任务

Here是它的文档

如果你想要一个很好的使用AlarmManager的例子,here它就是......如果手机关闭但这个功能不起作用你可以根据需要轻松启用它