2013-01-16 83 views
1

我正在使用以下代碼在特定日期和時間發出警報。AlarmManager未在指定時間觸發警報

mCalendar.setTimeInMillis(System.currentTimeMillis()); 
mCalendar.set(Calendar.YEAR, 2013); 
mCalendar.set(Calendar.MONTH, 0); 
mCalendar.set(Calendar.DAY_OF_MONTH, 16); 
mCalendar.set(Calendar.HOUR_OF_DAY, 1); 
mCalendar.set(Calendar.MINUTE, 30); 
mCalendar.set(Calendar.SECOND, 0); 
mCalendar.set(Calendar.MILLISECOND, 0); 
new ReminderManager(this).setReminder(info.id, mCalendar); 

ReminderManager.setReminder功能是:

public void setReminder(Long taskId, Calendar when) 
{  
    Intent i = new Intent(mContext, OnAlarmReceiver.class); 
    i.putExtra(DataBaseHelper.KEY_ROWID, (long)taskId); 
    PendingIntent pi = PendingIntent.getBroadcast (mContext,0,i,PendingIntent.FLAG_ONE_SHOT); 
    mAlarmManager.set(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), pi); 
} 

其工作不正常,報警,當我按我的應用程序不是我指定的時間內「將提示」菜單項熄滅。

回答

2

你確定日期是未來嗎?

我沒有檢查這一點,但也許這就是設計的行爲,如果你試圖建立一個報警過去......

2013-JAN-16 1:30看起來像過去對我來說(至少在我的時區)。

+0

根據我的時區日期是未來,但我的模擬器和系統顯示由於日光節約1小時的差異。 – user1554693

+1

感謝您的幫助,在模擬器上設置正確的時間已經解決了我的問題。 – user1554693