这样行得通吗?
public void setRepeatingAlarm() {
ArrayList<Integer> AlarmDays = datasource.getDays();
final int _id = (int) System.currentTimeMillis();
Log.d("AlarmManageDebt", String.valueOf(AlarmDays));
for (int i : AlarmDays) {
Calendar cal = Calendar.getInstance();
if (cal.get(Calendar.SECOND) >= 30)
cal.add(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, Integer.valueOf(i));
Intent intent = new Intent(this, TimeAlarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, _id,
intent, PendingIntent.FLAG_CANCEL_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
60 * 1000, pendingIntent);
}
}我对pendingIntent有一个惟一的ID,警报中唯一不同的是"i“变量,它根据数据库行给它新的秒数(最终,这将是每日通知,而"i”将代表一天,而不是一秒)。但这是为了测试目的。我已经确认在"i“中传递了正确的数据。我只是不确定这是否会产生三个不同的警报?
那么,我是否在这里创建了多个警报?或者每个循环都有效地替换了刚刚创建的循环?
发布于 2012-06-09 04:53:40
根据文档上的说法,我可以想象您将只有一个AlarmManager:
“如果已经为此意图计划了一个警报(filterEquals( Intent )定义了两个意图的相等),则它将被删除并替换为此警报。”http://developer.android.com/reference/android/app/AlarmManager.html
下面是如何确定意图相等的:http://developer.android.com/reference/android/content/Intent.html#filterEquals(android.content.Intent
基于这一点,我会说不,即使您的PendingIntent有唯一的I。
https://stackoverflow.com/questions/10955032
复制相似问题