【问题标题】:Multiple Alarm for multiple Alarm Manager Object多个警报管理器对象的多个警报
【发布时间】:2015-03-25 09:57:32
【问题描述】:

我想创建三个警报,分别命名为 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) 为每日两次设置提醒 2。

3) 为每日三次设置提醒3。

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

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

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

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

请给我建议任何解决方案。

【问题讨论】:

  • 你的意思是 Reminder2 和 Reminder3 的 id 一样吗?
  • 不,两者都有不同的 id。但是 Reminder2 本身我想每天设置两次(早上,晚上)。为此,我必须使用相同的 ID 对吗?像这样,Reminder3也一样,我想每天设置3次(早上,下午和晚上)。
  • 我认为 setInexactRepeating 可以将间隔设置为 12 小时左右。
  • 但是,如果我使用间隔作为默认间隔,它将起作用。在这里,早上-下午、下午-晚上和晚上-早上之间的间隔是无关紧要的。在这种情况下,我不能将间隔用作常数。
  • 您能否解释一下您希望如何每天设置两次 Reminder2。例如上午 10 点。和下午 15 点

标签: android alarmmanager android-pendingintent


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2018-07-14
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多