AlarmManager.SetRepeating(AlarmType, Int64, Int64, PendingIntent) Methode

Definition

Planen Sie einen wiederholten Alarm.

[Android.Runtime.Register("setRepeating", "(IJJLandroid/app/PendingIntent;)V", "GetSetRepeating_IJJLandroid_app_PendingIntent_Handler")]
public virtual void SetRepeating (Android.App.AlarmType type, long triggerAtMillis, long intervalMillis, Android.App.PendingIntent operation);
[<Android.Runtime.Register("setRepeating", "(IJJLandroid/app/PendingIntent;)V", "GetSetRepeating_IJJLandroid_app_PendingIntent_Handler")>]
abstract member SetRepeating : Android.App.AlarmType * int64 * int64 * Android.App.PendingIntent -> unit
override this.SetRepeating : Android.App.AlarmType * int64 * int64 * Android.App.PendingIntent -> unit

Parameter

type
AlarmType

Alarmtyp.

triggerAtMillis
Int64

Zeit in Millisekunden, in der der Alarm zuerst mit der entsprechenden Uhr ausgelöst werden soll (abhängig vom Alarmtyp).

intervalMillis
Int64

Intervall in Millisekunden zwischen nachfolgenden Wiederholungen des Alarms.

operation
PendingIntent

Aktion, die ausgeführt werden soll, wenn der Alarm ausgeht; stammt in der Regel von PendingIntent#getBroadcast IntentSender.getBroadcast().

Attribute

Hinweise

Planen Sie einen wiederholten Alarm. <b>Hinweis: Für Zeitsteuerungsvorgänge (Ticks, Timeouts usw.) ist die Verwendung android.os.Handlervon einfacher und viel effizienter.</b> Wenn bereits ein Alarm für denselben IntentSender geplant ist, wird er zuerst abgebrochen.

Wie #set, außer Sie können auch einen Zeitraum angeben, in dem sich der Alarm automatisch wiederholt. Dieser Alarm wird weiterhin wiederholt, bis explizit mit #cancelentfernt wird. Wenn die angegebene Triggerzeit in der Vergangenheit liegt, wird der Alarm sofort ausgelöst, wobei die Alarmanzahl davon abhängt, wie weit die Auslösezeit in der Vergangenheit relativ zum Wiederholungsintervall liegt.

Wenn ein Alarm verzögert wird (z. B. durch den Systemmodus, z. B. für nicht _WAKEUP Alarmtypen), wird eine übersprungene Wiederholung so schnell wie möglich übermittelt. Danach werden zukünftige Alarme nach dem ursprünglichen Zeitplan geliefert; sie driften im Laufe der Zeit nicht ab. Wenn Sie beispielsweise einen wiederkehrenden Alarm für den Anfang jeder Stunde festgelegt haben, aber das Telefon von 7:45 bis 8:45 Uhr geschlafen hat, wird ein Alarm gesendet, sobald das Telefon erwacht, dann wird der nächste Alarm um 9:00 Uhr gesendet.

Wenn Ihre Anwendung die Lieferzeiten driften lassen möchte, um zu gewährleisten, dass mindestens ein bestimmtes Zeitintervall immer zwischen Alarmen verstrichen ist, besteht der ansatzweise darin, einmal alarmierende Alarme zu verwenden und den nächsten Alarm selbst zu planen, wenn jede Alarmzustellung verarbeitet wird.

<p class="note"><b>Hinweis:</b> ab API 19 sind alle wiederholten Alarme ungenau. Wenn Ihre Anwendung genaue Lieferzeiten benötigt, muss sie einmalige exakte Alarme verwenden und wie oben beschrieben jedes Mal neu planen. Ältere Anwendungen, deren targetSdkVersion Vorgänger api 19 ist, werden weiterhin alle Alarme, einschließlich sich wiederholender Alarme, als genau behandelt.

Apps, die als Ziel Build.VERSION_CODES#S dienen, müssen das Flag PendingIntent#FLAG_MUTABLE für das festlegen, das PendingIntent zum Festlegen dieses Alarms verwendet wird, wenn die Alarmanzahl mit dem Schlüssel Intent#EXTRA_ALARM_COUNTangegeben werden soll.

Java-Dokumentation für android.app.AlarmManager.setRepeating(int, long, long, android.app.PendingIntent).

Teile dieser Seite sind Änderungen, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In Attribution License beschriebenen Begriffen verwendet werden.

Gilt für:

Weitere Informationen

  • Handler
  • <xref:Android.App.AlarmManager.Set(Android.App.AlarmType%2c+System.Int64%2c+System.Int64)>
  • <xref:Android.App.AlarmManager.SetExact(Android.App.AlarmType%2c+System.Int64%2c+System.Int64)>
  • <xref:Android.App.AlarmManager.SetWindow(Android.App.AlarmType%2c+System.Int64%2c+System.Int64%2c+System.Int64)>
  • Cancel(PendingIntent)
  • SendBroadcast(Intent)
  • <xref:Android.Content.Context.RegisterReceiver(Android.Content.BroadcastReceiver%2c+Android.Content.IntentFilter)>
  • FilterEquals(Intent)