Android定时任务

作者: zeo朱子宥 | 来源:发表于2017-10-11 13:08 被阅读0次

    参考:
    Android中定时器的3种实现方法


    Thread.sleep

    java的方式,不推荐
    sleep使线程暂停,如果需要循环,需要手动设置while之类。

    实现方式:

    • 定义Handler类:接收消息并处理
    Handler handler = new Handler() {  
        public void handleMessage(Message msg) {  
            // 要做的事情  
            super.handleMessage(msg);  
        }  
    };
    
    • 定义一个实现Runnable接口的线程类:该线程循环发送消息,并用sleep设置时间间隔。
    public class MyThread implements Runnable {  
        @Override  
        public void run() {  
            // TODO Auto-generated method stub  
            while (true) {  
                try {  
                    Thread.sleep(5000);// 线程暂停5秒,单位毫秒  
                    Message message = new Message();  
                    message.what = 1;  
                    handler.sendMessage(message);// 发送消息  
                } catch (InterruptedException e) {  
                    // TODO Auto-generated catch block  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  
    
    • 启动线程:
    new Thread(new MyThread()).start(); 
    

    postDelayed(Runnable, long)

    最简单的android实现
    该方法在一定时间后启动Runnable对象

    • 设置一个Handler
    Handler handler = new Handler();
    
    • 设置runnable,在其中用handler再次调用runnable以实现循环,间隔即为循环时间间隔
    Runnable runnable=new Runnable(){
       @Override
       public void run() {
        // TODO Auto-generated method stub
        //要做的事情,这里再次调用此Runnable对象,以实现每两秒实现一次的定时器操作
        handler.postDelayed(this, 2000);
       } 
    };
    
    • 启动线程时,如果不需要延时,可以直接runnable.run();,如果需要延时开始,则调用handler.postDelayed(runnable, 1000);
    • 停止计时器handler.removeCallbacks(runnable);

    Timer&TimerTask

    比较多的任务时建议使用

     TimerTask task = new TimerTask(){
       public void run(){
            //execute the task
            
        }
    };
    Timer timer = new Timer();
    timer.schedule(task, 250);
    

    此处是仅延时执行,schedule方法还可以加上一个参数作为定时执行的间隔时间,即schedule(TimerTask task, long delay, long period)

    相关文章

      网友评论

        本文标题:Android定时任务

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