1

で設定したアラームがあり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以上開始したくありません。GCMGCM

そのため、少なくとも 1 時間後に次のアラームがトリガーされるように、既存のアラームをトリガーして時計をリセットする必要があります。サービスからアラームを削除してからGCM再作成せずに行うことは可能ですか?

4

0 に答える 0