但是在使用同一個 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.
回覆刪除