0

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

在这里我声明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,我认为问题是当我重新启动应用程序时,意图数组列表被重新初始化并引发异常。如何通过保持意图数组列表不重新初始化来克服这个问题?

4

2 回答 2

0

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

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

在 Android 应用程序中使用偏好 API

堆栈溢出答案

于 2013-03-01T05:22:38.570 回答
-1

这与Android几乎没有关系。AnArrayOutOfBoundsException意味着当你这样做时:

intentArray.remove(selecteditemid_int);

selecteditemid_int大于数组的长度。

于 2013-03-01T05:13:19.593 回答