我已经使用 AlarmManager 编写了一个带有多个警报的应用程序。我还有一种方法可以取消所有当前/未决的警报。它运行良好,但是如果用户从最近关闭应用程序(警报仍处于活动状态,如预期的那样),我的取消警报方法不再起作用(应用程序崩溃)。有什么解决办法吗?用户关闭应用后如何取消闹钟?
这是我的警报的样子:
ArrayList<PendingIntent> intentArray = new ArrayList<PendingIntent>();
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
...
Intent intent = new Intent(this, AlertReceiver.class);
Long cal = new GregorianCalendar().getTimeInMillis() + sms_in_x_minutes * 60 * 1000;
PendingIntent i1 = PendingIntent.getBroadcast(this, intent_id++, intent, 0);
am.set(AlarmManager.RTC_WAKEUP, cal, i1);
intentArray.add(i1);
这就是我的取消方法的样子:
private void cancelAlarms(){
if(intentArray.size()>0){
for(int i=0; i<intentArray.size(); i++){
am.cancel(intentArray.get(i));
}
intentArray.clear();
}
}
我的猜测是,intentArray
在am
我关闭应用程序后它是空的,并且PendingIntents
没有保存。但我不知道如何解决这个问题。