Android中定时任务的实现方法

来源:互联网 发布:外卖快餐软件 编辑:程序博客网 时间:2024/06/13 19:42

在 Android 开发过程中,常常会遇到定时执行某个任务的需求。常用的几种方法如下:
1)采用ThreadThread.sleep()来实现;
2)采用HandlerHandler.postDelay()来实现;
3)采用TimerTimerTask来实现。

1 采用ThreadThread.sleep()来实现

采用这种方式实现的时候,其实现方式见如下代码:

private void performTask() {        new Thread() {            @Override            public void run() {                try {                    Thread.sleep(3000);                    //执行需要执行的任务                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }.start();    }

如果执行的任务中,需要更新界面UI的话,就需要另外的一个类——Handler来处理界面UI的更新,其实现方式如下:

    /**     * 在 Handler 中更新界面 UI     */    Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            //更新UI        }    };    private void performTask() {        new Thread() {            @Override            public void run() {                try {                    Thread.sleep(3000);                    //执行需要执行的任务                    Message message = new Message();                    message.what = 1;                    handler.sendMessage(message);// 发送消息                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }.start();    }

2 采用HandlerHandler.postDelay()来实现

采用这种方式的时候,其实现代码示例如下:

    Handler handler = new Handler();    private void performTask() {        handler.postDelayed(new Runnable() {            @Override            public void run() {                //执行需要执行的任务                handler.postDelayed(this, 3000);            }        }, 3000);    }

注:本实现主要是采用handler.postDela的递归调用来实现任务的重复执行的 ,事项方式相对简单,当不需要执行任务的时候,必须调用handler.removeCallbacks(runnable)来停止执行任务。

3 采用TimerTimerTask来实现

Timer类适用于执行一些简单的定时任务,无须做复杂的控制,是线程安全的单线程任务调度工具。
采用本方法实现定时任务的执行,其实现方式如下:

    private void performTask() {        Timer timer = new Timer();        TimerTask timerTask = new TimerTask() {            @Override            public void run() {                //执行需要执行的任务            }        };        timer.schedule(timerTask, 3000, 3000);    }

注:当不需要再执行定时任务的时候,需要调用timer.cancle()来停止计时器任务。

4 管理长时的定时任务

如果当前计时任务需要一直持续很长时间的话,可以使用Service来管理。

0 0
原创粉丝点击