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のpostDelayed(Runnable、long)方法を採用する。
この実装は比較的簡単です。
1.Handlerクラスを定義する
1.タイマー、タイマータスクおよびHandlerハンドルを定義する
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を使ってもいいです。タイマーの実行をキャンセルします。
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を使ってもいいです。タイマーの実行をキャンセルします。