【发布时间】:2011-03-14 17:03:04
【问题描述】:
我需要在 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 上没有方法来检查它当前是否正在运行,所以我不知道何时重新安排它。有什么想法吗?
【问题讨论】:
-
这是 Android 的错误吗?系统时钟设置应该停止和中断应用程序似乎完全蹩脚。
标签: android timer systemtime