java 计时器归零_java - 如何每15秒运行一次计时器并取消并重新启动

本文档介绍了如何在Java中创建一个计时器,使其每15秒执行一次指定功能,并在功能结束后自动取消并重新启动。当前的实现使用了TimerTask,但在功能执行后没有正确重置。最佳答案建议将延迟和周期都设置为15000毫秒,并使用计数器来跟踪已执行次数,确保在达到15次后重新开始。
摘要由CSDN通过智能技术生成

我的应用程序中有一个条件,那就是如何控制计时器。我想要的是恰好在15秒后启动功能,并意味着它应该被取消,并且随着功能结束,它从零开始重新开始。

到目前为止,我所做的是使用timer,并为其设置了1500个延迟和15个重复,但是它一次又一次地启动该功能,我想我在这一行做错了:timer.schedule(doAsynchronousTask, 1500,1 );

这是我完整的计时器代码

private final Handler handler = new Handler();

private final Timer timer = new Timer();

private final TimerTask task = new TimerTask() {

public void run() {

handler.post(new Runnable() {

public void run() {

launchFunction();

}

});

}

};

timer.schedule(doAsynchronousTask, 1500,1 );

void launchFunction(){

Log.d("timer","running");

timer.cancel();

}

但是它没有按预期工作,请帮助我。

最佳答案

阅读文档/**

* Schedule a task for repeated fixed-delay execution after a specific delay.

*

* @param task

* the task to schedule.

* @param delay

* amount of time in milliseconds before first execution.

* @param period

* amount of time in milliseconds between subsequent executions.

* @throws IllegalArgumentException

* if {@code delay < 0} or {@code period <= 0}.

* @throws IllegalStateException

* if the {@code Timer} has been canceled, or if the task has been

* scheduled or canceled.

*/

public void schedule(TimerTask task, long delay, long period) {

if (delay < 0 || period <= 0) {

throw new IllegalArgumentException();

}

scheduleImpl(task, delay, period, false);

}

将时间表设置为timer.schedule(doAsynchronousTask, 15000,15000 );并

维持一个计数器以计数是否达到15次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值