java - Android - 定时器类

标签 java android timer

我正在制作一个 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/

相关文章:

c# - 将 C# System.Timer 转换为 Threading.Timer

java - Android 写入文件时出现 NullPointerException

java - 正则表达式替换java中的特定字符

java - 在一组 4 个数字中查找出现次数最多的数字的最有效算法

java - JBoss 6 EAP,如何更改模块加载顺序?

java - 将拍摄的图片转换为位图

android - Android:在以下位置启动声音

c# - 在 C# 中同步闪烁标签

android - 如何禁用android中的主页按钮?

android - 如何使用 notifyDataSetChanged