多个Alarm Manager对象的多个警报

时间:2015-03-24 07:02:37

标签: android alarmmanager android-pendingintent

我想创建三个名为Reminder1,Reminder2,Reminder3的警报。 我知道,我可以使用不同的requestCode为上述三个创建多个警报。相应的代码嵌入在

下面
private void startReminderAlarm(int id, Calendar from_date, long interval) {

    // TODO Auto-generated method stub
    Intent remIntent;
    PendingIntent pendingIntent;
    AlarmManager manager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
    remIntent = new Intent(mContext, ReminderReceiver.class);
    remIntent.putExtra("ID", id);
    pendingIntent = PendingIntent.getBroadcast(mContext, id, remIntent, 0);
    manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, from_date.getTimeInMillis(), interval, pendingIntent);
    Toast.makeText(mContext, "Alarm Set for id" + id, Toast.LENGTH_SHORT).show();
    Log.d(TAG, "Alarm Set for id: " + id);
}

根据提醒的ID,我开始每个闹钟。这工作正常。我的问题是,

1)每日早晨设置Reminder1闹钟。

2)Reminder2设置为每日两次。

3)Reminder3将设置为每日三次。

第一种情况,不会产生问题,因为它只能用相应的id设置一次。

第二种情况,如果我创建了两个带有相应id的警报,则最后一个仅持续存在。第一个将被丢弃。

第3种情况,如果我用相应的id创建三个警报,则最后一个仅持续存在。第一和第二将被丢弃。

我想创建2个或3个具有特定ID的单独警报。

请建议我解决此问题的任何解决方案。

1 个答案:

答案 0 :(得分:0)

使用intent.setData来区分意图。那是

remIntent = new Intent(mContext, ReminderReceiver.class);
remIntent.putExtra("ID", id);
remIntent.setData(Uri.parse("reminder:"+id+"/"+from_date.getTimeInMillis()+"/"+interval));