2015-10-07 60 views
0

我想設置一個鬧鐘,每天下午2點20分關閉。這裏是代碼報警管理器 - SetRepeating - INTERVAL_DAY完全沒有觸發

Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 
     calendar.set(Calendar.HOUR_OF_DAY,14); 
     calendar.set(Calendar.SECOND,20); 

     AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
     PendingIntent pendingIntent; 
     Intent intentService = new Intent(context, DownloadService.class); 

     //setting alarm to run at 2:20 pm 
     pendingIntent= PendingIntent.getService(context,0,intentService,PendingIntent.FLAG_UPDATE_CURRENT); 
      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent); 

當我使用5*60*1000作爲間隔值工作正常。但是當我使用AlarmManager.INTERVAL_DAY時,它不會熄滅。有人能告訴我,如果上面的代碼是正確的?謝謝。

+0

你能澄清,並連最初的報警不會熄滅或只是重複?是你正在改變間隔,還是你做任何其他改變,使這項工作。 –

回答

0

我覺得你只是監督的INTERVAL_DAY說明:上 的Android API 19之前上運行時, setInexactRepeating(INT,長,長,的PendingIntent)認可

可用不精確的復發間隔。

在代碼中使用您的setRepeating不setInexactRepeating AlarmManager.INTERVAL_DAY

這裏是intervalMillis參數的區別:

setRepeating在 報警後續重複之間毫秒

intervalMillis間隔。

setInexactRepeating

intervalMillis間隔中的 報警後續重複之間毫秒。在API 19之前,如果這是 INTERVAL_FIFTEEN_MINUTES,INTERVAL_HALF_HOUR,INTERVAL_HOUR, INTERVAL_HALF_DAY或INTERVAL_DAY之一,則鬧鈴將與其他鬧鈴相位對齊以減少喚醒次數。 否則,警報將被設置爲應用程序調用 setRepeating(int,long,long,PendingIntent)。從API 19開始,所有 重複警報都將不準確,並且可能會與其他 警報配合使用,無論它們是否有重複間隔。

希望我幫助好運!

0

只需更換這行:

calendar.set(Calendar.SECOND,20); 

這一行:

calendar.set(Calendar.MINUTE,20);