Android 定时器时间表

标签 android timer task scheduled-tasks android-timer

以下是我在我的项目中用来安排任务的代码 fragment

mTimer = new Timer();
mTimer.schedule(new TimerTask() {

 @Override
 public void run() {
  //Do Something
 }

}, interval, interval);

这很好用。我在提到的时间间隔后得到事件。但是,如果日期设置小于当前设置,则无法发送任何事件。

有谁知道为什么会发生这种行为?

最佳答案

Timer 在您更改系统时钟时失败,因为 it's based on System.currentTimeMillis() , 这不是单调的。

Timer 不是 Android 类。它是存在于 Android API 中的 Java 类,用于支持现有的非 Android 库。在您的新 Android 代码中使用 Timer 几乎总是一个坏主意。使用Handler 处理在您的应用 Activity 或服务的生命周期内发生的定时事件。 Handler is based on SystemClock.uptimeMillis() 是单调的。使用 Alarm用于即使您的应用未运行也应该发生的定时事件。

关于Android 定时器时间表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34647562/

相关文章:

javascript - 移动第一 : running a timer job on client side - best option

android - 带有异步任务android的DoInBackground错误

c# - 从 C# 中的任务获取操作

c# - 无需等待即可开始任务

android 未知 Chrome 错误 : -6

Android - 将搜索传递给 fragment

java - Android - 获取线程 ID - 使用此 SO 方法始终返回 0

java - 当事务因 SQLException(超时)回滚时,如何在 Weblogic 10.3(EE 容器)中停止计时器重试?

android - Flutter 运行发布失败 : Minimum supported Gradle version is 5. 6.4。当前版本是 5.6.2

java - 如何使用 javax swing 计时器的整数数组来改变速度