Freigeben über


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

Art des Alarms.

triggerAtMillis
Int64

Zeit in Millisekunden, dass der Alarm zuerst abläuft, mit der entsprechenden Uhr (je nach Alarmtyp).

intervalMillis
Int64

Intervall in Millisekunden zwischen nachfolgenden Wiederholungen des Alarms.

operation
PendingIntent

Aktion auszuführen, wenn der Alarm abläuft; kommt in der Regel von PendingIntent#getBroadcast IntentSender.getBroadcast().

Attribute

Hinweise

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

Wie #set, außer Sie können auch eine Periode bereitstellen, in der der Alarm automatisch wiederholt wird. Dieser Alarm wird immer wieder wiederholt, bis er explizit entfernt wurde #cancel. Wenn sich die angegebene Triggerzeit in der Vergangenheit befindet, wird der Alarm sofort ausgelöst, wobei die Alarmanzahl abhängig davon, wie weit in der Vergangenheit die Triggerzeit relativ zum Wiederholungsintervall ist.

Wenn ein Alarm verzögert wird (z. B. nach Systemschlaf, z. B. bei 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 nicht im Laufe der Zeit. Wenn Sie beispielsweise einen wiederkehrenden Alarm für die Spitze jeder Stunde festgelegt haben, aber das Telefon von 7:45 bis 8:45 einschlafen hat, wird ein Alarm gesendet, sobald das Telefon weckt, dann wird der nächste Alarm um 9:00 Uhr gesendet.

Wenn Ihre Anwendung zulässt, dass die Lieferzeiten abdriften können, um zu gewährleisten, dass mindestens ein bestimmtes Zeitintervall immer zwischen Alarmen verstrichen ist, besteht der Ansatz darin, einmalige Alarme zu verwenden, die nächste zu planen, wenn sie jede Alarmzustellung behandeln.

<p class="note"><b>Note:</b> as of API 19, all repeating alarms are inexact. Wenn Ihre Anwendung genaue Lieferzeiten benötigt, muss sie einmal genaue Alarme verwenden und jedes Mal neu planen, wie oben beschrieben. Ältere Anwendungen, deren targetSdkVersion Vorgänger api 19 ist, verfügen weiterhin über alle Alarme, einschließlich wiederholter Alarme, die genau behandelt werden.

Apps für die Zielbestimmung Build.VERSION_CODES#S müssen die Kennzeichnung PendingIntent#FLAG_MUTABLE für die PendingIntent Verwendung zum Festlegen dieses Alarms festlegen, wenn die Alarmanzahl mit dem Schlüssel Intent#EXTRA_ALARM_COUNTbereitgestellt werden soll.

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

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 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)