1

我有一个设置为 的闹钟AlarmManager。我也有GCM(谷歌云消息)广播接收器。警报响起以调用服务从服务器获取新消息。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如果收到非即时消息通知,我需要调用该服务来下载消息。问题是:我可能会得到GCM,调用服务GCM,下载消息,停止服务。下一分钟警报触发并再次启动服务。由于服务处理和存储消息,它给设备带来了负载。我不希望该服务每小时启动一次以上。

所以我需要触发现有的闹钟并重置时钟,以便至少在 1 小时后触发下一个闹钟。是否可以不从GCM服务中删除警报然后重新创建它?

4

0 回答 0