简化开发

Android处理延时执行操作的方法

2018-11-12  本文已影响0人  lllllliudahong

在很多情况下我们需要对线程做延时的逻辑处理,下面是我了解的几个常用的方法。列出来做下笔记:

1.使用Handler

Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
              //要执行的操作
            }
        }, 2000);//2秒后执行Runnable中的run方法

2.使用TimerTask

TimerTask task = new TimerTask() {
            @Override
            public void run() {
              //要执行的操作
            }
        };
        Timer timer = new Timer();
        timer.schedule(task, 2000);//2秒后执行TimeTask的run方法

3.使用Thread

new Thread() {
            @Override
            public void run() {
                super.run();
                Thread.sleep(2000);//休眠2秒
                 //要执行的操作
                         }
        }.start();

关于TimerTask的补充使用

1、指定日期运行一次
 public static void main(String[] args) throws ParseException {
        String sdate = "2018-02-14";
        SimpleDateFormat sf = new SimpleDateFormat("yy-MM-dd");
        Date date = sf.parse(sdate);

        Timer timer = new Timer();
        timer.schedule(new TimerTask() {

            @Override
            public void run() {
                System.out.println("系统正在运行……");
            }
        }, date); //在指定的日期运行一次定时任务
    /*如果date日期在今天之前,则启动定时器后,立即运行一次定时任务run方法*/
    /*如果date日期在今天之后,则启动定时器后,会在指定的将来日期运行一次任务run方法*/
    }
2、在指定的时间后,每隔指定的时间,重复运行定时器任务
public static void main(String[] args) throws ParseException {
        String sdate = "2018-02-10";
        SimpleDateFormat sf = new SimpleDateFormat("yy-MM-dd");
        Date date = sf.parse(sdate);

        Timer timer = new Timer();
        timer.schedule(new TimerTask() {

            @Override
            public void run() {
                System.out.println("系统正在运行……");
            }
        }, date, 2000);
        /*如果指定的date时间是当天或者今天之前,启动定时器后会立即每隔2s运行一次定时器任务*/
        /*如果指定的date时间是未来的某天,启动定时器后会在未来的那天开始,每隔2s执行一次定时器任务*/
    }
3、在距当前时刻的一段指定距离后,每隔指定时间运行一次定时器任务
public static void main(String[] args) {
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {

            @Override
            public void run() {
                System.out.println("系统正在运行……");
            }
        }, 5000, 2000);
        /*当启动定时器后,5s之后开始每隔2s执行一次定时器任务*/
    }
停止的方法:
timer.cancel();
上一篇下一篇

猜你喜欢

热点阅读