但是在使用同一個 receiver class 時,千萬要小心 PendingIntent 裡的 request code 要不一樣,否則會發生後蓋前的狀況,也就是新設定的鬧鐘會覆蓋先前設定的鬧鐘,只剩下新設定的鬧鐘生效。
使用同一個 PendingIntent 物件來設定鬧鐘,一定發生後蓋前的狀況。
使用不同的 PendingIntent 物件但相同的 request code,還是會發生後蓋前的狀況。
Calendar cal1 = Calendar.getInstance();
cal1.add(Calendar.SECOND, 10);
Log.d(TAG, "設定鬧終於10秒後: " + cal1);
Calendar cal2 = Calendar.getInstance();
cal2.add(Calendar.SECOND, 20);
Log.d(TAG, "設定鬧終於20秒後: " + cal2);
Intent intent = new Intent(this.ctx, TestReceiver.class);
intent.putExtra("msg", "傳訊息給鬧鐘");
PendingIntent pi1 = PendingIntent.getBroadcast(this.ctx, 1, intent, 0);
PendingIntent pi2 = PendingIntent.getBroadcast(this.ctx, 2, intent, 0);
AlarmManager am = (AlarmManager) this.ctx.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal1.getTimeInMillis(), pi1);
am.set(AlarmManager.RTC_WAKEUP, cal2.getTimeInMillis(), pi2);
good for me, thanks.
回覆刪除