首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >定时器任务在第一次运行后停止调用run方法

定时器任务在第一次运行后停止调用run方法
EN

Stack Overflow用户
提问于 2020-12-22 16:02:11
回答 3查看 271关注 0票数 0

我是编程新手,我正在做一个android应用程序,在这个应用程序上,我有一个要求,我需要监控30多年的一些日志。我使用的是一个计时器任务,但是如果30秒结束了,而run方法一旦终止,计时器任务就不会重复。

下面是我的代码:

代码语言:javascript
运行
复制
connectivityTimerTask = new ConnectivityTimerTask();
timer = new Timer(true);
//timer = new Timer(); // tried with this but it is not working
timer.schedule(connectivityTimerTask,30 * 1000);

TimerTask:

代码语言:javascript
运行
复制
public class ConnectivityTimerTask extends TimerTask {

        @Override
        public void run() {
            Log.error("----- ACK NotReceived -----" + System.currentTimeMillis());
            //resetMonitor(); using this method I am setting the timer again
        }
    }

我想知道安排重复时间的最佳实践是什么。我用对了吗?我可以使用resetMonitor()方法吗?

EN

Stack Overflow用户

发布于 2020-12-23 08:31:34

您可以使用可以通过scheduleAtFixedRate以固定速率调度Timer任务,

代码语言:javascript
运行
复制
int THIRTY_SECONDS = 30 * 1000;
Timer mTimer = new Timer();
mTimer.scheduleAtFixedRate(new TimerTask() {
    @Override
    public void run() {
        // do whatever you want every 30s
        Log.e("TAG", "----- ACK NotReceived -----" + System.currentTimeMillis());
    }
}, 0, THIRTY_SECONDS);

无论何时想要停止计时器,都可以调用timer.cancel()

票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65405061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档