报警管理器的独特待定意图

时间:2014-09-03 00:51:57

标签: android android-intent broadcastreceiver android-pendingintent

我正在使用Alarm Manager在特定的设定时间接收系统触发器。我正在使用PendingIntents和BroadcastReceiver。我需要为警报管理器创建4个唯一的待处理意图,以便在2个不同的时间触发(start1,end1,start2,end2)。我面临的问题是在BroadcastReceiver的OnReceive方法中,我为每个意图而不是1个调用获得2个调用。所以最后我总共有8个调用(start1,start1,end1,end2,start2,start2,end2,end2),而我应该得到4个调用(start1,end1,start2,end2)。

我尝试过使用唯一的请求代码PendingIntent.FLAG_UPDATE_CURRENT& PendingIntent.FLAG_UPDATE_CURRENT但它们似乎都没有解决这个问题。我发现系统会针对相同的请求代码触发两次警报。

//creating the intent & intent filter
//Action is custom action

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(action);
Intent intent = new Intent(action);

//generating unique request ID
int requestID = (int) System.currentTimeMillis();
intent.putExtra("requestID",requestID);

//creating pending intent
PendingIntent alarmIntent = PendingIntent.getBroadcast(mContext,requestID,intent,
PendingIntent.FLAG_UPDATE_CURRENT|PendingIntent.FLAG_ONE_SHOT); 

//adding pending intent to alarm manager
mAlarmMgr = (AlarmManager) mContext
                .getSystemService(Context.ALARM_SERVICE);
mAlarmMgr.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),
AlarmManager.INTERVAL_FIFTEEN_MINUTES, alarmIntent);

任何建议都会有很大的帮助!

由于

P

0 个答案:

没有答案