Partager via


AlarmManager.SetRepeating(AlarmType, Int64, Int64, PendingIntent) Méthode

Définition

Planifiez une alarme répétée.

[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

Paramètres

type
AlarmType

type d’alarme.

triggerAtMillis
Int64

temps en millisecondes que l’alarme doit d’abord se désactiver, à l’aide de l’horloge appropriée (selon le type d’alarme).

intervalMillis
Int64

intervalle en millisecondes entre les répétitions suivantes de l’alarme.

operation
PendingIntent

Action à effectuer lorsque l’alarme s’éteint ; provient généralement de PendingIntent#getBroadcast IntentSender.getBroadcast().

Attributs

Remarques

Planifiez une alarme répétée. <b>Remarque : pour les opérations de minutage (cycles, délais d’expiration, etc.), il est plus facile et beaucoup plus efficace d’utiliser android.os.Handler.</b> S’il existe déjà une alarme planifiée pour le même IntentSender, elle sera d’abord annulée.

Comme #set, sauf que vous pouvez également fournir une période à laquelle l’alarme se répète automatiquement. Cette alarme continue de se répéter jusqu’à ce qu’elle soit explicitement supprimée avec #cancel. Si l’heure de déclenchement indiquée se trouve dans le passé, l’alarme est déclenchée immédiatement, avec un nombre d’alarmes selon la distance entre le temps du déclencheur et l’intervalle de répétition.

Si une alarme est retardée (par mise en veille système, par exemple, pour les types d’alarmes non _WAKEUP), une répétition ignorée est fournie dès que possible. Après cela, les alarmes futures seront livrées selon le calendrier d’origine ; ils ne dérivent pas au fil du temps. Par exemple, si vous avez défini une alarme périodique pour le haut de toutes les heures, mais que le téléphone était endormi de 7h45 jusqu’à 8h45, une alarme sera envoyée dès que le téléphone se réveille, puis l’alarme suivante sera envoyée à 9h00.

Si votre application souhaite autoriser la dérive des délais de livraison afin de garantir qu’au moins un certain intervalle de temps s’écoule toujours entre les alarmes, l’approche à adopter consiste à utiliser des alarmes ponctuelles, en planifiez la suivante vous-même lors de la gestion de chaque livraison d’alarme.

<p class="note"><b>Remarque :</b> à partir de l’API 19, toutes les alarmes répétées sont inexactes. Si votre application a besoin de temps de livraison précis, elle doit utiliser des alarmes exactes ponctuelles, rééchantillonner chaque fois comme décrit ci-dessus. Les applications héritées dont targetSdkVersion la version antérieure à l’API 19 continue d’avoir toutes leurs alarmes, y compris les alarmes répétées, traitées comme exactes.

Le ciblage des Build.VERSION_CODES#S applications doit définir l’indicateur PendingIntent#FLAG_MUTABLE sur l’être PendingIntent utilisé pour définir cette alarme, s’ils veulent que le nombre d’alarmes soit fourni avec la clé Intent#EXTRA_ALARM_COUNT.

Documentation Java pour android.app.AlarmManager.setRepeating(int, long, long, android.app.PendingIntent).

Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.

S’applique à

Voir aussi

  • 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)