1
我正在使用alarmManager在我的應用程序中設置多個警報並且遇到問題。當設置的PendingIntent這樣:Android:AlarmManager無法取消警報
timerAlarmIntent = PendingIntent.getBroadcast(myContext, 0, alarmIntent, 0);
myAM.set(AlarmManager.RTC_WAKEUP, alarmTime, timerAlarmIntent);
凡requestCode設置爲0(在getBroadcast上下文旁),我可以使用:
myAM.cancel(timerAlarmIntent);
取消我在應用程序中設置的報警任何金額。但是,我設置的每個鬧鐘都會覆蓋最後一個鬧鐘,因此只有一個鬧鐘會關閉。如果我設置requestCode唯一編號,如:
timerAlarmIntent = PendingIntent.getBroadcast(myContext, i, alarmIntent, 0);
myAM.set(AlarmManager.RTC_WAKEUP, alarmTime, timerAlarmIntent);
如果我設置爲每個報警一個唯一的ID號碼使用for循環。這樣,所有的報警運行良好,但我不能解除警報,因爲當我只運行一個報警實際上將取消:
myAM.cancel(timerAlarmIntent);
如何將requestCode設置爲一個唯一的編號,也不得不取消它的選項?
我結束了使用,以解決該問題的代碼是:
timerAlarmIntent = PendingIntent.getBroadcast(myContext, i, alarmIntent, 0);
ArrayList<PendingIntent> intentArray = new ArrayList<PendingIntent>();
intentArray.add(timerAlarmIntent);
myAM.set(AlarmManager.RTC_WAKEUP, alarmTime, timerAlarmIntent);
要取消我設置了以下方法PendingIntents:
private void cancelAlarms(){
if(intentArray.size()>0){
for(int i=0; i<intentArray.size(); i++){
myAM.cancel(intentArray.get(i));
}
intentArray.clear();
}
}
+1正是我要說:-) – Pikaling
有時候,你只是需要有人拼出來的東西很明顯。謝謝你,你的建議奏效了。我用我最終使用的代碼更新了我的問題。 – ryandlf