我正在创建一个调度程序应用程序。我正在使用AlarmManager
和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
,我认为问题是当我重新启动应用程序时,意图数组列表被重新初始化并抛出异常。如何通过保持intent数组列表不重新初始化来克服这个问题?
答案 0 :(得分:0)
我认为问题是当我重新启动应用程序意图时,数组列表会重新初始化并抛出异常。
在您的情况下,您必须使用Sharepreference or database
,将arraylist存储到shareprence并在intentArray.remove(selecteditemid_int);
更新您的SP时,所以下次它会为您提供最后存储的值,请查看以下链接。
答案 1 :(得分:-1)
这与Android没什么关系。 ArrayOutOfBoundsException
意味着当你这样做时:
intentArray.remove(selecteditemid_int);
selecteditemid_int
大于数组的长度。