我正在制作一个 Android 应用程序(QR 码阅读器),我需要每秒执行 4 次操作。为此,我决定使用 Timer 类。我发现了它的一个奇怪行为:
timer = new Timer();
timer.scheduleAtFixedRate(onTimer, 100, stn.GetStep());
timer.cancel();
timer = new Timer();
timer.scheduleAtFixedRate(onTimer, 100, stn.GetStep());
最后一行抛出错误 - java.lang.IllegalStateException: TimerTask is scheduled already
。是不是很奇怪?
最佳答案
不,它应该是这样工作的。 TimerTask
是一次性对象。如果您想再次安排代码,请创建一个新的 TimerTask
。 (参见 documentation 。)
如果你不喜欢每次运行都创建一个全新的对象,你可以这样做
Runnable toRunRepeatedly = new Runnable() {
public void run() {
// your code goes here...
}
};
然后做
TimerTask tt = new TimerTask() {
public void run() {
// Delegate to the same runnable each time.
toRunRepeatedly.run();
}
};
相关问题:
关于java - Android - 定时器类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11328393/