Android 定时执行工具类

类名为MyTimeTask的工具类:

import java.util.Timer;
import java.util.TimerTask;

public class MyTimeTask {
    private Timer timer;
    private TimerTask task;
    private long time;

    public MyTimeTask(long time, TimerTask task) {
        this.task = task;
        this.time = time;
        if (timer == null) {
            timer = new Timer();
        }
    }

    public void start() {
        timer.schedule(task, 0, time);//每隔time时间段就执行一次
    }

    public void stop() {
        if (timer != null) {
            timer.cancel();
            if (task != null) {
                task.cancel();  //将原任务从队列中移除
            }
        }
    }
}

使用方法


  var task: MyTimeTask? = null;

    companion object {
    //定义发送handle的标志,全局常量,不重复就行
        const val TIMER = 999
    }

//开始执行任务的时候,调用  setTimer()  就可以了
 fun setTimer() {
 //3000是毫秒,每多长时间执行一次
        task = MyTimeTask(3000, object : TimerTask() {
            override fun run() {
                mHandler.sendEmptyMessage(TIMER);
            }
        });
        task?.start();
    }


val mHandler: Handler = object : Handler() {
        override fun handleMessage(msg: Message?) {
            super.handleMessage(msg)
            when (msg?.what) {
                TIMER -> {
                  //定时执行的任务具体操作
                  
                }
                else -> {

                }
            }
        }
    }
    
//结束执行的时候调用   stopTimer()   就可以了
  fun stopTimer() {
        task?.stop();
    }
    

一句话:

单任务的操作就是:把工具类放在widget文件夹下,把使用方法的代码都复制到要用的地方,开始就调用 setTimer(),任务执行在 TIMER -> {//定时执行的任务具体操作 },结束调用 stopTimer()。

注:
1、每一个Timer仅对应唯一一个线程。
2、Timer不保证任务执行的十分精确。
3、Timer类的线程安全的。
4、多任务的操作适合用。

分析:
Timer类的方法

schedule(TimerTask task,  long delay,  long period)
schedule(TimerTask task,  Date time,  long period)
scheduleAtFixedRate(TimerTask task,  long delay,  long period)
scheduleAtFixedRate(TimerTask task,  Date firstTime,  long period)

第一个参数是一个TimerTask,第二个参数是延长执行时间或者开始执行日期,第三个参数是执行时间间隔。

RXJAVA定时执行
CountDownTimer使用心得及总结
一起设计一个Android倒计时组件

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值