Android 实现倒计时

来源:互联网 发布:gui图形界面编程 编辑:程序博客网 时间:2024/05/17 09:14

1、Timer和TimerTask

    private int recLen = 11;    Timer timer = new Timer();    timer.schedule(task, 1000, 1000);    TimeTask task = new TimerTask(){        @override        public void run() {            runOnUIThread(new Runnable(){                @override                public void run() {                    recLen--;                    Syso(""+recLen);                    if(recLen<0){                        timer.cancel();                        // TODO:                    }                }            });        }    };

2、TimerTask和Handler,不使用Timer

    private int recLen = 11;    Timer timer = new Timer();    timer.schdule(task, 1000. 1000);    TimerTask task = new TimerTask() {        @override        public void run() {            recLen--;            Message message = new Message();            message.what = 1;            handler.sendMessage(message);        }    };    final Handler handler = new Handler(){        public void handlerMessage(Message msg) {            switch(msg.what){                case 1:                    Syso(""+recLen);                    if(recLen<0){                        timer.cancel();                        // TODO:                    }                break;            }        }    };

3、Handler与Message,不使用TimerTask

    private int recLen = 11;    Message message = handler.obtainMessage(1);    handler.sendMessageDelayed(message, 1000);    final Hadnler handler = new Handler(){        public void handlerMessage(Message msg) {            switch(msg.what){                case 1:                recLean--;                if(recLen <0){                    Message message = handler.obtainMessage(1);                    handler.sendMessageDelayed(message, 1000);                } else {                    // TODO:                }                break;            }            super.handlerMessage(msg);        }    };

4、Handler与Thread,不占用UI线程

    private int recLen = 11;    new Thread(new MyThread()).start();    final Handler handler = new Handler() {        public void handlerMessage(Message msg){            switch(msg.what) {            case 1:                recLen--;                break;            }            super.handlerMessage(msg);        }    };    public class MyThread implements Runnable {        @override        public void run() {            while(true){                try{                    Thread.sleep(1000);                    Message message = new Message();                    message.what = 1;                    handler.sendMessage(message);                } catch (Exception e){}            }        }    }

5、Handler与Runnable, 最简单

    private int recLen = 11;    runnable.run();    Handler handler = new Handler();    Runnable runnable = new Runnable(){        @override        public void run(){            recLen--;            handler.postDelayed(this, 1000);        }    };
0 0
原创粉丝点击