美文网首页简化开发
Android处理延时执行操作的方法

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

作者: lllllliudahong | 来源:发表于2018-11-12 15:13 被阅读0次

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

    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();
    

    相关文章

      网友评论

        本文标题:Android处理延时执行操作的方法

        本文链接:https://www.haomeiwen.com/subject/drkcfqtx.html