使用PendingIntent的多个警报

时间:2013-03-01 05:07:11

标签: android alarmmanager android-pendingintent

我正在创建一个调度程序应用程序。我正在使用AlarmManagerPendingIntent设置多个事件。我使用以下方法:

这里我声明PendingIntent数组:

public static ArrayList <PendingIntent> intentArray= new ArrayList <PendingIntent>();

这里我向数组添加意图:

PendingIntent pendingIntent = PendingIntent.getBroadcast(
        EditScheduleActivity.this, intentid, notifyintent,
        PendingIntent.FLAG_UPDATE_CURRENT); //intent id is unique

alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
        pendingIntent);
MainActivity.intentArray.add(pendingIntent);

我在这里清除警报:

EditScheduleActivity.alarmManager.cancel(intentArray.get(selecteditemid_int));
intentArray.remove(selecteditemid_int);

但是当我清除警报时,我得到一个ArrayIndexOutOfBoundsException,我认为问题是当我重新启动应用程序时,意图数组列表被重新初始化并抛出异常。如何通过保持intent数组列表不重新初始化来克服这个问题?

2 个答案:

答案 0 :(得分:0)

  

我认为问题是当我重新启动应用程序意图时,数组列表会重新初始化并抛出异常。

在您的情况下,您必须使用Sharepreference or database,将arraylist存储到shareprence并在intentArray.remove(selecteditemid_int);更新您的SP时,所以下次它会为您提供最后存储的值,请查看以下链接。

Using preference API in Android applications

Stackoverflow Answer

答案 1 :(得分:-1)

这与Android没什么关系。 ArrayOutOfBoundsException意味着当你这样做时:

intentArray.remove(selecteditemid_int);

selecteditemid_int大于数组的长度。