Android实现计时与倒计时方法

该博客实用多种倒计时的办法,还在实用Timer吗?快来看看吧!

1.TimerTask与Handler(不用Timer的改进型)

public class timerTask extends Activity{ 
    private int recLen = 11; 
    private TextView txtView; 
    Timer timer = new Timer(); 

    public void onCreate(Bundle savedInstanceState){ 
        super.onCreate(savedInstanceState); 

        setContentView(R.layout.timertask); 
        txtView = (TextView)findViewById(R.id.txttime); 

        timer.schedule(task, 1000, 1000);       // timeTask 
    }    

    final Handler handler = new Handler(){ 
        @Override 
        public void handleMessage(Message msg){ 
            switch (msg.what) { 
            case 1: 
                txtView.setText(""+recLen); 
                if(recLen < 0){ 
                    timer.cancel(); 
                    txtView.setVisibility(View.GONE); 
                } 
            } 
        } 
    }; 

    TimerTask task = new TimerTask() { 
        @Override 
        public void run() { 
            recLen--; 
            Message message = new Message(); 
            message.what = 1; 
            handler.sendMessage(message); 
        } 
    }; 
}

2.Timer与TimerTask(Java实现)

public class timerTask extends Activity{ 

    private int recLen = 11; 
    private TextView txtView; 
    Timer timer = new Timer(); 

    public void onCreate(Bundle savedInstanceState){ 
        super.onCreate(savedInstanceState); 

        setContentView(R.layout.timertask); 
        txtView = (TextView)findViewById(R.id.txttime); 

        timer.schedule(task, 1000, 1000);       // timeTask 
    }    

    TimerTask task = new TimerTask() { 
        @Override 
        public void run() { 

            runOnUiThread(new Runnable() {      // UI thread 
                @Override 
                public void run() { 
                    recLen--; 
                    txtView.setText(""+recLen); 
                    if(recLen < 0){ 
                        timer.cancel(); 
                        txtView.setVisibility(View.GONE); 
                    } 
                } 
            }); 
        } 
    }; 
}

3.Handler和Message

public class timerTask extends Activity{ 
    private int recLen = 11; 
    private TextView txtView; 

    public void onCreate(Bundle savedInstanceState) {   
        super.onCreate(savedInstanceState);   

        setContentView(R.layout.timertask);  
        txtView = (TextView)findViewById(R.id.txttime); 

        Message message = handler.obtainMessage(1);     // Message 
        handler.sendMessageDelayed(message, 1000); 
    }   

    final Handler handler = new Handler(){ 

        public void handleMessage(Message msg){         // handle message 
            switch (msg.what) { 
            case 1: 
                recLen--; 
                txtView.setText("" + recLen); 

                if(recLen > 0){ 
                    Message message = handler.obtainMessage(1); 
                    handler.sendMessageDelayed(message, 1000);      // send message 
                }else{ 
                    txtView.setVisibility(View.GONE); 
                } 
            } 

            super.handleMessage(msg); 
        } 
    }; 

4.Handler和Thread

public class timerTask extends Activity{ 
    private int recLen = 0; 
    private TextView txtView; 

    public void onCreate(Bundle savedInstanceState){ 
        super.onCreate(savedInstanceState); 

        setContentView(R.layout.timertask); 
        txtView = (TextView)findViewById(R.id.txttime); 

        new Thread(new MyThread()).start();         // start thread 
    }    

    final Handler handler = new Handler(){          // handle 
        public void handleMessage(Message msg){ 
            switch (msg.what) { 
            case 1: 
                recLen++; 
                txtView.setText("" + recLen); 
            } 
            super.handleMessage(msg); 
        } 
    }; 

    public class MyThread implements Runnable{      // thread 
        @Override 
        public void run(){ 
            while(true){ 
                try{ 
                    Thread.sleep(1000);     // sleep 1000ms 
                    Message message = new Message(); 
                    message.what = 1; 
                    handler.sendMessage(message); 
                }catch (Exception e) { 
                } 

5.Hander和Runnable(最简单)

public class timerTask extends Activity{ 
    private int recLen = 0; 
    private TextView txtView; 

    public void onCreate(Bundle savedInstanceState){ 
        super.onCreate(savedInstanceState); 

        setContentView(R.layout.timertask); 
        txtView = (TextView)findViewById(R.id.txttime); 

        handler.postDelayed(runnable, 1000); 
    }    

    Handler handler = new Handler(); 
    Runnable runnable = new Runnable() { 
        @Override 
        public void run() { 
            recLen++; 
            txtView.setText("" + recLen); 
            handler.postDelayed(this, 1000); 
        } 
    }; 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值