我需要在 Android 应用程序中运行定期任务。我目前使用这样的计时器:
final Handler guiHandler = new Handler();
// the task to run
final Runnable myRunnable = new Runnable() {
@Override
public void run() {
doMyStuff();
}
};
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
guiHandler.post(myRunnable);
}
}, 0, 30000); // run every 30 seconds
这正是我所需要的,但有一个问题:如果我更改模拟器或手机上的时间,计时器将停止运行。这是我更改时间时出现在日志中的内容:
D/SystemClock( 331): Setting time of day to sec=1278920137
W/SystemClock( 331): Unable to set rtc to 1278920137: Invalid argument
定时器没有被中断,但在系统时钟改变后它显然不再运行。只要应用程序正在运行,我就需要任务一直运行。
如果它像这样停止,我该如何重新启动计时器?Timer 或 TimerTask 上没有方法来检查它当前是否正在运行,所以我不知道何时重新安排它。有任何想法吗?