[Android] AlarmManager で特定時間に処理を実行

■アラーム設定
特定の時間に処理を実行したい場合には AlarmManager を使用すると便利。
アラームでセットした時間にPendingIntent で仕掛けた処理が実行されるというシンプルな仕組み。

以下は10時にBroadcastReceiverへ通知が行われる実装例。

Calendar calendar = Calendar.getInstance();
calendar = DateUtils.truncate(calendar, Calendar.HOUR);
calendar.set(Calendar.HOUR_OF_DAY, 10);

Intent intent = new Intent(getApplicationContext(), SampleReceiver.class);
PendingIntent pIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pIntent);


メリットとしては、アラームはOS側でセットされるのでアプリを終了しても有効であるということ。
ただし、アプリ詳細からの強制終了や端末を再起動すると解除されるので注意。


■端末に仕掛けられているアラーム情報を出力

端末に設定しているアラームの情報は adb shell コマンドで出力ができる。
コマンドは以下。

adb shell dumpsys alarm


ただ、リダイレクトしてファイル出力したほうがいいかも。。。

adb shell dumpsys alarm > alarm.txt

プロフィール

hiiro

Author:hiiro

最新記事
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Counter