2012-09-28 65 views
0

我在使用setRepeating()設置鬧鐘時遇到問題。Android中的AlarmManager.setRepeating()未設置鬧鐘

Intent i = new Intent(context, OnAlarmReceiver.class); 
i.putExtra("id", storable.getId()); 
PendingIntent pi = PendingIntent.getBroadcast(context, storable.getId(), i, PendingIntent.FLAG_UPDATE_CURRENT); 

mgr.setRepeating(AlarmManager.RTC_WAKEUP, storable.getObject().getTimeOnDay(Calendar.FRIDAY), Event.MILLISECONDS_IN_A_DAY*7, pi); 
Calendar c = Calendar.getInstance(); 
c.setTimeInMillis(storable.getObject().getTimeOnDay(Calendar.FRIDAY)); 
Log.v("ACTUALLY SCHEDULED ON FRIDAY", c.getTime().toString()); 

logcat的規定:2月9日至28日:17:58.535:V /實際調度星期五(32494):星期五10月5 1點43分○○秒EDT 2012

這是正確的時候,我調度。但是,我的警報不會觸發。關於可能導致這種情況的唯一線索是,當我使用調試器進入方法時,被調用的方法之一是Parcel.readException()。我不知道這意味着什麼,或者它甚至是非常重要的。有人知道可能會發生什麼嗎?

+0

嗨,顯示您的OnAlarmReceiver類OnAlarmReceiver擴展廣播接收器 – vandzi

+0

公共類{ \t @覆蓋 \t公共無效的onReceive(上下文語境,意圖意圖){// 做一些工作 }} 我很抱歉,我無法正確縮進:/你需要更多嗎? –

+0

這永遠不會被調用。如果不明確。 –

回答

0

請參閱this鏈接。湯姆和CommonsWare也提出了相當好的答案。

編輯:

看看這有助於:

Intent myIntent = new Intent(context, OnAlarmReceiver.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent, 0); 
    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.add(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); 
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60, pendingIntent); 
+0

這是我用來構建這段代碼的代碼,除了我使用系統時間而不是使用時間之外,它幾乎完全相同,所以我的第一個標誌參數是不同的。 –

+0

查看我的更新代碼...使用calendar.add並嘗試它是否工作.. –

+0

此代碼與實現的代碼(Calendar.add()在getTimeOnDay()中完成)幾乎完全相同。)時間是正確的我從日誌中獲得肯定。 –

0

我找到了答案。此方法被多次調用,並使用PendingIntent中storable.getId()的相同值。它覆蓋了舊的PendingIntent並安排了另一個我沒有等的東西。感謝那些幫助過你的人。

+0

很高興你想出了一個解決方案! –