【发布时间】:2011-02-09 07:34:56
【问题描述】:
我正在尝试制作一个允许用户为每个任务设置任务和警报或通知的应用程序。我在下面创建了一个“setAlarm”方法。但是,我有一个错误,每当我设置多个带有警报的任务时,以前的所有任务都会以某种方式被取消,只有最近设置的警报才会响起。你知道什么问题吗?我的猜测是,每次我调用“setAlarm”时,“日历”实例都会重置。我该如何解决这个问题?
public void setAlarm() {
Intent intent1 = new Intent(NewGoal.this, SingleAlarm.class);
PendingIntent sender = PendingIntent.getBroadcast(NewGoal.this,
0, intent1, 0);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
if (alarm_time == 10) {
calendar.add(Calendar.SECOND, alarm_time);
} else if (alarm_time == 30 {
calendar.add(Calendar.SECOND, alarm_time)
}
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
Log.i(TEST, "In setAlarm method");
Log.i(TEST, "calendar=" + calendar.MILLISECOND);
}
【问题讨论】:
-
我没有看到任何明显的东西。在您的
AlarmManager中,您从calendar对象传递了一个长值,因此这可能用于确定何时在正确的时间触发警报。我猜你的问题实际上出在AlarmManager某处,要么在set()方法中,要么在正确时间实际触发警报的方法中。 -
我建议将 [java] 标签更改为 [android] 以引起 Android 开发者的注意。
-
@britishmutt - 你是对的。似乎当我调用 set() 方法时,它取消了先前的意图。我怎样才能避免这个问题?
标签: java android notifications alarm