java - 在 Android 中使用 Timer.scheduleAtFixedRate()

标签 java android timer

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

(对于那些好奇的人来说,该应用程序适用于个人项目,一个“会说话的”时钟,需要每分钟检查一次是否有相应的声音文件要播放。这不是我打算向世界发布的东西,因此不考虑电池问题。)

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

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

我尝试将间隔设置为每 30 秒,但即便如此,我似乎还是错过了一些分钟。在 Android 上使用计时器有什么具体注意事项吗?有没有更好的方法来实现我的需求?

最佳答案

问题:您是否 100% 绝对确定您需要每分钟都执行此操作?在我看来,你会疯狂地消耗电池,并且会引起相当多的不满意的用户。

但是如果您对这个问题的回答: 暂停您的 Activity 后,系统无法保证其上的任何内容(包括您的任务)将继续运行;这样,一旦系统需要几兆字节来执行任何操作,它就会终止您的 Activity 并停止计时器。

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

关于java - 在 Android 中使用 Timer.scheduleAtFixedRate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11971544/

相关文章:

java - dcm4che - 标签是 "8 byte integer"?

android - Proguard:保留所有有注释的类

android - 在 Android 上为 HLS 流呈现隐藏式字幕

java - 定时任务不运行

android - 使用 Runnable 和 postDelayed 更新 UI 不适用于计时器应用程序

java - 从 excel : suggestions for design or approach for better performance 批量加载 Hibernate

java - 当 JMockit 位于类路径上时,Arquillian org.junit.runner.Runner NoClassDefFoundError

java - 调用 JooQ DSLContext 的 .close() 时,连接何时关闭(如果有的话)?

java - 在相等标签处解析 xml 时出现 NullPointerException

java - 如果我们不生成窗口,为什么 Timer 不工作?