下面的代碼不會引發任何錯誤,也不會起作用。當我調試addInvoiceReminder()方法時,它顯示時間正在正確設置,並且AlarmManager被設置爲在先前設置的時間關閉。有人能看到我的缺陷嗎?我不確定爲什麼BroadcastReceiver的onRecieve事件從未觸發。AlarmManager永遠不會爲BroadcastReceiver返回事件,如何調試?
//---adds an invoice reminder when the user successfully adds a sales or expense invoice---
public void addInvoiceReminder() {
//---gets a Calendar object with current time---
Calendar cal = Calendar.getInstance();
//---sets the calendar object to the reminder dialog date---
//cal.set(reminder_year, reminder_month, reminder_day);
cal.add(Calendar.SECOND, 30);
Intent intent = new Intent(this, DueInvoiceAlarmReceiver.class);
intent.putExtra("reminder", "Invoice Number: 999999 is due!");
PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0);
//---gets the alarm manager service set for the calendar time which is the reminder time---
AlarmManager alarm_manager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarm_manager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
}
//---Receives the event fired when the reminder date for an invoice is passed---
public class DueInvoiceAlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
Bundle bundle = intent.getExtras();
String message = bundle.getString("reminder");
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(context, "There was an error somewhere, but we still received an alarm", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
}
什麼不起作用? –
BroadcastReceiver的onReceive從不觸發,我在DueInvoiceAlarmReceiver中設置了一個調試點,它從不觸發。 – AutoM8R