2012-03-27 59 views
0

我試圖用AlarmManager來完成重複任務。我使用setInexactRepeating(),並設置間隔爲每15分鐘(只用於測試目的),但是,它似乎並不奏效。有任何想法嗎?我定期任務不會被調用

這裏是我的代碼:

AlarmReceiver

public class AlarmReceiver extends BroadcastReceiver { 


    @Override 
    public void onReceive(Context context, Intent intent) { 

    Log.w("CacheCrusader", "Recurring Job: Clearing Cache"); 

     } 

} 

二傳手

private void setRecurringAlarm(Context context) { 


      Calendar updateTime = Calendar.getInstance(); 
      updateTime.set(Calendar.HOUR_OF_DAY, 20); 
      updateTime.set(Calendar.MINUTE, 15); 

      Intent downloader = new Intent(context, AlarmReceiver.class); 
      PendingIntent recurringDownload = PendingIntent.getBroadcast(context, 
        0, downloader, PendingIntent.FLAG_CANCEL_CURRENT); 
      AlarmManager alarms = (AlarmManager) getSystemService(
        Context.ALARM_SERVICE); 
      alarms.setInexactRepeating(AlarmManager.RTC_WAKEUP, 
        updateTime.getTimeInMillis(), 
        AlarmManager.INTERVAL_FIFTEEN_MINUTES, recurringDownload); 
     } 

代碼設置二傳手

Context context = getApplicationContext(); 
    setRecurringAlarm(context); 

Android清單宣言

<receiver android:name=".receiver.AlarmReceiver"></receiver> 

logcat中沒有生成錯誤...警報只是從不發生。

回答

1

嗯,這是不準確等等......如果時間間隔設置爲15分鐘,你必須等待至少半小時,以確保它有/沒有被解僱。 您設置的開始時間(20:15)。用1分鐘的時間間隔進行測試。而且,如果你需要一個更可靠的時間表,使用setRepeating(),或者可能set()每個報警調用註冊下一個。

+0

權。不精確的事情設置了一個地板。您的鬧鐘不會超過15分鐘。上限比這更大。 – Argyle 2012-03-27 02:20:40

+0

感謝您的回答......不幸的是,我一直在等待4個多小時,警報仍然沒有被觸發。 – 2012-03-27 04:00:41

+0

也許你的應用崩潰了?這將清除警報。在任何情況下,使用'set()'手動註冊下一個警報是使用警報的最可靠的方法。你可能想嘗試一下。 – 2012-03-27 04:13:58