スケジューラアプリケーションを作成しています。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
と、問題が発生します。アプリケーションを再起動すると、インテント配列リストが再初期化され、例外がスローされることが問題だと思います。インテント配列リストを再初期化しないようにすることで、この問題をどのように克服できますか?