2012-02-14 32 views
0

我用這個代碼來設置警報在我們的業務應用:AlarmManager setRepeating無視間隔

private void setupAlarm() { 
    final Context c = getApplicationContext(); 
    final AlarmManager alarm = 
     (AlarmManager) c.getSystemService(Context.ALARM_SERVICE); 
    final Intent i = new Intent(c, AlarmReceiver.class); 
    final PendingIntent sender = 
     PendingIntent.getBroadcast(c, 0, i, PendingIntent.FLAG_CANCEL_CURRENT); 
    final long startFromNow = System.currentTimeMillis()+10000; 
    final long timer = 5*60*1000; 
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, startFromNow, timer, sender); 
} 

我無法理解,爲什麼報警的時間間隔的不尊重。第一次報警在10秒後開始(如預期),之後每2分鐘啓動一次(122秒至127秒),這是錯誤的。間隔時間是5分鐘,還是我錯了?

我在一個更簡單的應用程序中使用這個確切的代碼:一個活動,設置重複鬧鐘,接收器只是創建一個日誌。它有效。

什麼可以使AlarmManager的行爲如此不同? 我曾嘗試:

  • 使用set(),並在報警接收機使用其他set()超過5分鐘:發射2分鐘
  • 使用setInexactRepeating()代替setRepeating():推出2分鐘

任何見解都會有所幫助。謝謝!

回答

2

想到的即時建議 - 確保您不要在別處設置具有相同意圖和不同價值的警報。意圖不需要是同一個對象,請參閱AlarmManager中的設置方法文檔。

相關問題