Android端末上でタスクをスケジュール実行する方法
Androidでは、タスクを定期実行する方法はいくつかあります。以下にその方法の一部を示します。
- ハンドラとランナブルを使用:ハンドラのpostDelayedメソッドで、一定時間後にタスクを実行できます。最初にハンドラのオブジェクトを生成し、次にランナブルのオブジェクトを生成します。ランナブルオブジェクトのrunメソッドで実行するタスクのコードを記述します。最後にハンドラのpostDelayedメソッドで、ランナブルオブジェクトを一定時間後で実行します。
サンプルコードは次のとおりです。
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
// 要执行的任务代码
// ...
// 完成后再次延迟执行任务
handler.postDelayed(this, 1000); // 1000毫秒(1秒)后执行
}
};
// 第一次延迟执行任务
handler.postDelayed(runnable, 1000); // 1000毫秒(1秒)后执行
- TimerとTimerTaskを使う:TimerクラスとTimerTaskクラスを使用して、時間に沿ったタスクを実行できます。まず、Timerオブジェクトを作成し、次にTimerTaskオブジェクトを作成して、TimerTaskオブジェクトのrunメソッドに実行するタスクコードを記述します。最後に、Timerのscheduleメソッドによって、TimerTaskオブジェクトを時間通りに実行します。
例に示すコードは次のとおりです。
Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
// 要执行的任务代码
// ...
}
};
// 第一次延迟执行任务,然后每隔一段时间重复执行
timer.schedule(timerTask, 1000, 1000); // 1000毫秒(1秒)后执行,然后每隔1000毫秒(1秒)重复执行
- アラームマネージャーを用いると、アラームマネージャーを利用して、一定時間後にタスクを行うことができます。アラームマネージャのインスタンスを取得した後、PendingIntentオブジェクトを作成し、PendingIntentオブジェクトで実行するタスクを指定した後、アラームマネージャのセットメソッドを使用して、PendingIntentオブジェクトを指定した時間と関連付けます。
以下のコード例をご参照ください。
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, YourReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
// 设置定时执行任务的时间,这里设置为5秒后执行
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.SECOND, 5);
// 设置定时执行任务
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
注意:YourReceiverは定时タスクを実行するブロードキャストを受信するために使用されるBroadcastReceiverサブクラスです。あなた独自のBroadcastReceiverクラスを作成し、AndroidManifest.xmlファイルに登録する必要があります。
Androidでタスクを定期処理する方法として一般的に利用されているので、用途に応じていずれかの方法を選択することができます。