java.lang.IllegalStateException:TimerTask已计划
显示此错误的java.lang.IllegalStateException:TimerTask已计划,java,android,timer,Java,Android,Timer,显示此错误的计时器出现问题。我有一个定时器,它调度定时器任务(关闭)。然后,在TimerTask中,我安排下一个TimerTask等等。据我所知,这应该是可行的,但当我运行它的应用程序有“停止工作”的错误 levelCreationTimer.schedule(关闭,1000)我通过创建扩展TimerTask的类来解决这个问题,然后我安排类的实例 class MyClass1 extends TimerTask { @Override public void run()
计时器出现问题。我有一个定时器
,它调度定时器任务
(关闭)。然后,在TimerTask
中,我安排下一个TimerTask
等等。据我所知,这应该是可行的,但当我运行它的应用程序有“停止工作”的错误
levelCreationTimer.schedule(关闭,1000)
我通过创建扩展TimerTask
的类来解决这个问题,然后我安排类的实例
class MyClass1 extends TimerTask {
@Override
public void run()
{
//my code
levelCreationTimer.schedule(new MyClass2(),1000);
//scheduling the next TimerTask ^
}
}
class MyClass2 extends TimerTask {
@Override
public void run()
{
//my code
levelCreationTimer.schedule(new MyClass1(),1000);
//scheduling the next TimerTask ^
}
}
异常消息表示TimerTask对象只能调度一次。在计划对象之前,请尝试克隆对象(近、远、最后)TimerTask task=close.clone();levelCreationTimer.schedule(任务,1000)代码>@mkasberg创建一个新的计时器不会解决这个问题吗?不,如果一个计时器任务只能调度一次,并且您传递的是同一个计时器任务,则不会。请阅读此处的计时器任务文档:它说您可以调度一个计时器任务一次性或重复执行。您正在将其安排为一次性执行。阅读此处有关计时器的文档:如果要重复执行,则需要在调用schedule()
时传入period
参数。您可以使用我最初的建议克隆任务,也可以重构代码以使用重复计时器。“clone()”方法无法工作,因为TimerTask是抽象的(我无法从中创建对象)。
levelCreationTimer.cancel();
levelCreationTimer = new Timer();
class MyClass1 extends TimerTask {
@Override
public void run()
{
//my code
levelCreationTimer.schedule(new MyClass2(),1000);
//scheduling the next TimerTask ^
}
}
class MyClass2 extends TimerTask {
@Override
public void run()
{
//my code
levelCreationTimer.schedule(new MyClass1(),1000);
//scheduling the next TimerTask ^
}
}