で設定したアラームがありAlarmManager
ます。GCM
(Google Cloud Messaging) ブロードキャスト レシーバーもあります。サーバーから新しいメッセージを取得するサービスを呼び出すためにアラームが鳴る。GCM
新しいインスタントメッセージの通知を取得し、通知を表示したり、新しい非インスタントメッセージをダウンロードしたりするために使用されます。
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent("NAME");
PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, 0 );
int type = AlarmManager.ELAPSED_REALTIME_WAKEUP;
long interval = AlarmManager.INTERVAL_HOUR;
long triggerTime = SystemClock.elapsedRealtime() + interval;
am.setInexactRepeating(type, triggerTime, interval, pi);
アラームは、すべてのメッセージを取得するサービスをトリガーします。インスタントメッセージまたは非インスタントGCM
メッセージの通知のみを受け取ります。
非インスタントメッセージ通知GCM
で が到着した場合は、サービスを呼び出してメッセージをダウンロードする必要があります。問題: を取得し、 からサービスを呼び出し、メッセージをダウンロードし、サービスを停止する可能性があります。次の分のアラームがトリガーされ、サービスが再開されます。サービスはメッセージを処理して保存するため、デバイスに負荷がかかります。サービスを1 時間に 1回以上開始したくありません。GCM
GCM
そのため、少なくとも 1 時間後に次のアラームがトリガーされるように、既存のアラームをトリガーして時計をリセットする必要があります。サービスからアラームを削除してからGCM
再作成せずに行うことは可能ですか?