Android アプリケーションは、android.os.Handler & java.lang.Runnable クラスを使用して定期的なタイマーを実行できます。簡単な例を以下に示します。
キーポイント
1. android.app.Service を拡張するサービス クラスは、onBind、onCreate & onDestroy、ライフサイクル メソッドを実装する必要があります。2. periodTask は、スレッドを実行する Runnable 実装のインスタンスです。run() を実行すると、「Awake」というメッセージが出力されます。3. mHandler は、periodicTask スレッドにアタッチされた Handler のインスタンスです。4. ハンドラーは、postDelayed によって、毎分スレッドを実行するように通知されます。5. サービスが破棄されると、removeCallbacks を呼び出して、periodicTask インスタンスが Handler から削除されます。
サンプルコード
public class PeriodicTimerService extends Service {
private Handler mHandler = new Handler();
public static final int ONE_DAY = 86400000;
private Runnable periodicTask = new Runnable() {
public void run() {
Log.v("PeriodicTimerService","Awake");
mHandler.postDelayed(periodicTask, ONE_DAY );
}
};
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
mHandler.postDelayed(periodicTask, ONE_DAY );
}
@Override
public void onDestroy() {
super.onDestroy();
mHandler.removeCallbacks(periodicTask);
Toast.makeText(this, "Service onDestroy() ", Toast.LENGTH_LONG).show();
}
}