次のエントリ: 前のエントリ/次のエントリにタイトル付加 [chalow]
AlarmManagerで単純にブロードキャストを投げるだけ
2011-02-06-2 / カテゴリ: [Java][Android] / [permlink]
__軽く__ググってみても、「指定Activityを起動」「BroadcastReceiverをextendsした自前レシーバで受ける」しか見つけられなかったので「特定Activityが生きてれば受ける、なければ無視」をお試し。
ちなみに、定期/定時処理の実装は以下の方法がある(ほかにも有るかも。知らないだけで)
するようなイメージみたい。(thanks! @amay077さん)
AlarmManagerはシステムレベルで動作するので、アプリの寿命と独立してるのがポイント。
指定時間にブロードキャストでなく、単にActivityを起動するだけなら、
AlarmManager.ELAPSED_REALTIME で「○msec後」に起動設定になる。
「Y年m月d日H時M分S秒に」の場合は、AlarmManager.RTC を使う
前記のAlarmManager#setは、指定時間に単に起動するのみ。
定期的に実行するにはAlarmManager#setRepeating()を使う。
キューに入ってるアラームを停止するにはcancel()
参考
Service(サービス)関連 mucchinのAndroid戦記
AlarmManagerで指定した時間に処理させる - Tech Booster
AlarmManager - 愚鈍人
Taosoftware: AlarmManager1 AndroidでCronみたいなことをするには
AlarmManagerの使用 - すにぺっと
ちなみに、定期/定時処理の実装は以下の方法がある(ほかにも有るかも。知らないだけで)
Timer | アプリで管理 |
AlarmManager | システム(android)で管理 |
AlarmManagerはシステムレベルで動作するので、アプリの寿命と独立してるのがポイント。
public final static String INTENT_ACTION = "alarmmgr_broadcast"; : : AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); Intent intent = new Intent(INTENT_ACTION); PendingIntent pending = PendingIntent.getBroadcast(this, 0, intent, 0); long current = SystemClock.elapsedRealtime(); // 5秒後(current + 5*1000)にpending発動(1回きり) am.set(AlarmManager.ELAPSED_REALTIME, current + 5*1000, pending);このBroadcastを受けるには[2011-02-06-1]の例で。
指定時間にブロードキャストでなく、単にActivityを起動するだけなら、
Intent intent = new Intent(this, FooBar.class); PendingIntent pending = PendingIntent.getActivity(this, 0, intent, 0);こんな感じで。サービス起動もいけそう(getService()で)。
AlarmManager.ELAPSED_REALTIME で「○msec後」に起動設定になる。
「Y年m月d日H時M分S秒に」の場合は、AlarmManager.RTC を使う
Calendar cal = Calendar.getInstance(); cal.set(2011, 1, 6, 3, 0, 0); // 2011-02-06 03:00:00 の場合。monthは0オリジン(-1する) long next = cal.getTimeInMillis(); Log.d(TAG, "current: " + next); am.set(AlarmManager.RTC, next, pending);
前記のAlarmManager#setは、指定時間に単に起動するのみ。
定期的に実行するにはAlarmManager#setRepeating()を使う。
キューに入ってるアラームを停止するにはcancel()
am.cancel(pending);キャンセルは、Intentが同じ(filterEquals()がtrue)ものが対象らしい。
Remove any alarms with a matching Intent. Any alarm, of any type, whose Intent matches this one (as defined by filterEquals(Intent)), will be canceled.
AlarmManager#cancel
参考
Service(サービス)関連 mucchinのAndroid戦記
AlarmManagerで指定した時間に処理させる - Tech Booster
AlarmManager - 愚鈍人
Taosoftware: AlarmManager1 AndroidでCronみたいなことをするには
AlarmManagerの使用 - すにぺっと
次のエントリ: 前のエントリ/次のエントリにタイトル付加 [chalow]
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2013-05-02 16:12