欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Android中實(shí)現(xiàn)定時(shí)器的3種解決方法

 更新時(shí)間:2013年05月20日 16:58:50   作者:  
基于Android中實(shí)現(xiàn)定時(shí)器的3種解決方法
在Android開(kāi)發(fā)中,定時(shí)器一般有以下3種實(shí)現(xiàn)方法:
一、采用Handler與線程的sleep(long)方法
二、采用Handler的postDelayed(Runnable, long)方法
三、采用Handler與timer及TimerTask結(jié)合的方法
下面逐一介紹:
一、采用Handle與線程的sleep(long)方法
Handler主要用來(lái)處理接受到的消息。這只是最主要的方法,當(dāng)然Handler里還有其他的方法供實(shí)現(xiàn),有興趣的可以去查API,這里不過(guò)多解釋。
1. 定義一個(gè)Handler類,用于處理接受到的Message。
復(fù)制代碼 代碼如下:

Handler handler = new Handler() {
    public void handleMessage(Message msg) {
        // 要做的事情
        super.handleMessage(msg);
    }
};

2. 新建一個(gè)實(shí)現(xiàn)Runnable接口的線程類,如下:
復(fù)制代碼 代碼如下:

public class MyThread implements Runnable {
    @Override
    public void run() {
        // TODO Auto-generated method stub
        while (true) {
            try {
                Thread.sleep(10000);// 線程暫停10秒,單位毫秒
                Message message = new Message();
                message.what = 1;
                handler.sendMessage(message);// 發(fā)送消息
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

3. 在需要啟動(dòng)線程的地方加入下面語(yǔ)句:
復(fù)制代碼 代碼如下:

new Thread(new MyThread()).start();

4. 啟動(dòng)線程后,線程每10s發(fā)送一次消息。二、采用Handler的postDelayed(Runnable, long)方法
這個(gè)實(shí)現(xiàn)比較簡(jiǎn)單一些。
1. 定義一個(gè)Handler類
復(fù)制代碼 代碼如下:

Handler handler=new Handler();
Runnable runnable=new Runnable() {
    @Override
    public void run() {
        // TODO Auto-generated method stub
        //要做的事情
        handler.postDelayed(this, 2000);
    }
};

2. 啟動(dòng)計(jì)時(shí)器
復(fù)制代碼 代碼如下:

handler.postDelayed(runnable, 2000);//每?jī)擅雸?zhí)行一次runnable

3. 停止計(jì)時(shí)器
復(fù)制代碼 代碼如下:

handler.removeCallbacks(runnable);

三、采用Handler與timer及TimerTask結(jié)合的方法
1. 定義定時(shí)器、定時(shí)器任務(wù)及Handler句柄
復(fù)制代碼 代碼如下:

private final Timer timer = new Timer(); 
private TimerTask task; 
Handler handler = new Handler() { 
    @Override
    public void handleMessage(Message msg) { 
        // TODO Auto-generated method stub 
        // 要做的事情 
        super.handleMessage(msg); 
    }
};

2. 初始化計(jì)時(shí)器任務(wù)
復(fù)制代碼 代碼如下:

task = new TimerTask() { 
    @Override
    public void run() { 
        // TODO Auto-generated method stub 
        Message message = new Message(); 
        message.what = 1; 
        handler.sendMessage(message); 
    } 
};

3. 啟動(dòng)定時(shí)器
復(fù)制代碼 代碼如下:

timer.schedule(task, 2000, 2000);

簡(jiǎn)要說(shuō)一下上面三步提到的一些內(nèi)容:
1. 定時(shí)器任務(wù)(TimerTask)顧名思義,就是說(shuō)當(dāng)定時(shí)器到達(dá)指定的時(shí)間時(shí)要做的工作,這里是想Handler發(fā)送一個(gè)消息,由Handler類進(jìn)行處理。
2. java.util.Timer.schedule(TimerTask task, long delay):這個(gè)方法是說(shuō),dalay/1000秒后執(zhí)行task.只執(zhí)行一次。
java.util.Timer.schedule(TimerTask task, long delay, long period):這個(gè)方法是說(shuō),delay/1000秒后執(zhí)行task,然后進(jìn)過(guò)period/1000秒再次執(zhí)行task,這個(gè)用于循環(huán)任務(wù),執(zhí)行無(wú)數(shù)次,當(dāng)然,你可以用timer.cancel();取消計(jì)時(shí)器的執(zhí)行。

相關(guān)文章

最新評(píng)論