以下是我在我的项目中用来安排任务的代码 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/