我的警报设置为AlarmManager
。我还有GCM
(Google云消息传递)广播接收器。警报梯级以调用服务以从服务器获取新消息。 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
服务中删除警报然后重新创建它?