2012-03-27 14 views
0

Ich versuche AlarmManager zu verwenden, um eine wiederkehrende Aufgabe zu erfüllen. Ich benutze setInexactRepeating() und habe das Intervall alle 15 Minuten eingestellt (nur für Testzwecke), aber es scheint nicht zu funktionieren. Irgendwelche Ideen?Meine wiederkehrende Aufgabe wird nicht aufgerufen

Hier ist mein Code:

AlarmReceiver

public class AlarmReceiver extends BroadcastReceiver { 


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

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

     } 

} 

Setter

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); 
     } 

-Code, der den Setter

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

Android Manifest Erklärung Sets

Im Logcat werden keine Fehler generiert ... der Alarm wird nur nicht ausgelöst

Antwort

1

Nun, es ist ungenau so ... Wenn Sie das Intervall auf 15 Minuten setzen, müssen Sie mindestens eine halbe Stunde warten, um sicher zu sein, dass es nicht gefeuert hat. Nach die Startzeit, die Sie eingestellt haben (20:15). Probieren Sie es mit etwas 1 Minute Intervall zum Testen aus. Und wenn Sie einen zuverlässigeren Zeitplan benötigen, verwenden Sie setRepeating() oder möglicherweise set(), wobei jeder Alarmaufruf den nächsten registriert.

+0

Rechts. Das ungenaue Ding setzt einen Boden. Ihr Alarm wird nicht öfter als 15 Minuten auftreten. Die obere Grenze ist größer als das. – Argyle

+0

Danke für deine Antwort ... Leider habe ich über 4 Stunden gewartet und der Alarm wurde immer noch nicht ausgelöst. –

+0

Vielleicht stürzt Ihre App ab? Das würde die Alarme löschen. In jedem Fall ist die Verwendung von 'set()' und die manuelle Registrierung des nächsten Alarms die zuverlässigste Art, Alarme zu verwenden. Vielleicht möchten Sie es versuchen. –

Verwandte Themen