3

ich periodische Hintergrundaufgabe leite Alarmmanager mit:Überprüfen Sie, ob Alarmmanager Aufgabe im Gange ist

AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(context, AlarmReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 10 * 60 * 1000, pendingIntent); 

habe ich eine Flagge PendingIntent.FLAG_UPDATE_CURRENT, aber ich fürchte, es wird wieder schreibt mein Zeitplan, wenn ich wieder diesen Code ausführen. Fragen:

  • Wird es die Zeit zurücksetzen und ich muss 10 Minuten warten, um ein Ereignis zu erhalten?
  • Gibt es eine Möglichkeit, zu überprüfen, ob mein Alarmtaskplan eingestellt ist?

Antwort

1

Wird es die Zeit zurückzusetzen, und ich werde für 10 Minuten warten müssen, um ein Ereignis zu erhalten?

Ja wird es. Wie pro doc:

Wenn bereits ein Alarm für die gleiche IntentSender geplant ist, wird es zunächst annulliert.

Und pro

Gibt es eine Möglichkeit, wenn mein Alarm Aufgabe Zeitplan festgelegt ist zu überprüfen?

Ja, there is mehrere Lösungen, die Sie überprüfen können.

Und, übrigens, beachten Sie, dass setRepeating ist inexakt.

Hinweis: Ab API 19 sind alle sich wiederholenden Alarme ungenau. Wenn Ihre Anwendung genaue Lieferzeiten benötigt, muss sie einmalige exakte Alarme verwenden, die wie oben beschrieben jedes Mal neu geplant werden. Ältere Anwendungen, deren targetSdkVersion älter als API 19 ist, werden weiterhin alle ihre Alarme, einschließlich der Wiederholung von Alarmen, als genau behandelt behandeln.

Verwandte Themen