Android開発中、タイマー

2765 ワード

転載元:http://www.android-study.com/pingtaikaifa/508.html
 
Android開発において、タイマーは一般的に以下の3つの実現方法があります。
一、Handlerとスレッドのsleep(long)方法を採用する二、HandlerのpostDelayed(Runnable、long)方法を採用する三、HandlerとtimerとTimeTaskを結合する方法を採用する。
以下で紹介します。
一、Handleとスレッドのsleep(long)方法を採用する。
Handlerは主に受信したメッセージを処理するために用いられる。これは最も主要な方法です。もちろんハードラーには他の方法があります。APIを調べに行く興味があります。ここでは説明が多いだけです。
1.受け取ったMessageを処理するために、Handlerクラスを定義する。
Handler handler = new Handler() {
    public void handleMessage(Message msg) {
        //      
        super.handleMessage(msg);
    }
};
2.Runnableインターフェースを実現するスレッド類を新たに作成します。
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);//     
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
3.スレッドを起動するところには、次のような文言を入れます。
new Thread(new MyThread()).start();
4.スレッドを起動した後、スレッドは10 sごとにメッセージを送信します。
二、HandlerのpostDelayed(Runnable、long)方法を採用する。
この実装は比較的簡単です。
1.Handlerクラスを定義する
Handler handler=new Handler();
Runnable runnable=new Runnable() {
    @Override
    public void run() {
        // TODO Auto-generated method stub
        //     
        handler.postDelayed(this, 2000);
    }
};
2.起動タイマ
handler.postDelayed(runnable, 2000);//       runnable. 
3.停止タイマ
handler.removeCallbacks(runnable); 
三、Handlerとtimer及びTimerTaskを結合する方法を採用する。
1.タイマー、タイマータスクおよびHandlerハンドルを定義する
 
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.タイマータスクを初期化する
task = new TimerTask() { 
    @Override 
    public void run() { 
        // TODO Auto-generated method stub 
        Message message = new Message(); 
        message.what = 1; 
        handler.sendMessage(message); 
    } 
}; 
3.起動タイマー
timer.schedule(task, 2000, 2000); 
上の3つのステップの内容を簡単に説明します。
1.タイマータスク(TimeTask)名前の通り、タイマーが指定された時間に到達する時に行う作業です。ここではHandlerにメッセージを送りたいです。Handlerクラスで処理します。
2.java.util.Timer.schedule(TimeTask task,long delay):この方法は、dalay/1000秒後にtaskを実行します。一回だけ実行します。java.util.Timer.schedule(TimeTask task,long delay,long period):この方法は、delay/1000秒後にtaskを実行してから、period/1000秒後に再びtaskを実行します。これは循環タスクに用いられます。何回も実行します。もちろん、timer.cancelを使ってもいいです。タイマーの実行をキャンセルします。