2016-05-31 47 views
1

我設置了2個鬧鐘,一個用於通知,另一個用於完成一些任務。我的問題是,只有一個警報似乎工作(通知服務一,第一個警報設置)。其他鬧鐘不會熄滅。這裏是我的代碼:具有2個待處理意圖的報警管理器只有1個作品?

Intent myIntent1 = new Intent(getApplicationContext(), NotificationService.class); 
     PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 0, myIntent1, 0); 
     AlarmManager alarmManager1 = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); 
     Calendar calendar1 = Calendar.getInstance(); 
     calendar1.setTimeInMillis(System.currentTimeMillis()); 
     long frequency1 = 30 * 1000; // in ms 
     alarmManager1.setRepeating(AlarmManager.RTC_WAKEUP, calendar1.getTimeInMillis(), frequency1, pendingIntent); 

     // Set alarm to fire go to Next day everyday at the same time 
     Calendar calendar = Calendar.getInstance(); 
     calendar.set(Calendar.HOUR_OF_DAY, 14); // For 1 PM or 2 PM 
     calendar.set(Calendar.MINUTE, 57); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 
     Intent myintent = new Intent(getApplicationContext(), AlarmNextDayService.class); 
     AlarmManager alarmManager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); 
     PendingIntent pi = PendingIntent.getService(getApplicationContext(), 11, myintent,0); 
     alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pi); 

歡迎任何建議。我看了其他消息來源,直到現在,對我來說沒有任何作用。 我還添加報警permisison清單文件,如下所示:

<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> 

謝謝

+1

您是否嘗試在每個intent上添加一個唯一標識符,如:Intent intent = new Intent(「uniqId」,null,context,Receiver.class);'? –

+1

你有清單中列出的第二個'Service'嗎?另外,在設置小時和分鐘後,您是否意識到您將「Calendar」實例重置爲當前時間?請記住,在這段時間內,一個不精確的警報可能會消失很多。 –

+1

原來是這個問題,@MikeM。你能把它寫成答案嗎? – LoveMeow

回答

1
Calendar calendar = Calendar.getInstance(); 
    calendar.set(Calendar.HOUR_OF_DAY, 14); // For 1 PM or 2 PM 
    calendar.set(Calendar.MINUTE, 57); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 

您正在設置HOUR_OF_DAY和MINUTE,但他們重寫,通過調用setTimeInMillis(系統。的currentTimeMillis());

之後,您使用已經在過去的calendar.getTimeMillis()值來設置鬧鐘,所以我認爲鬧鐘已取消。

1

由於省電,您很可能會看到問題,因爲Service無法保證在由警報觸發時運行。如果您的設備在電池上並且該報警消失時處於空閒狀態,則直到下次設備完全開啓或使用交流電源時纔會觸發設備。您需要使用一個BroadcastReceiver,它包含一個喚醒鎖,然後在完成後由Service發佈。 WakefulBroadcastReceiver使這個更容易處理。這article將有助於提供更多的細節。

相關問題