Condividi tramite


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

Definizione

Pianificare un allarme ripetuto.

[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

Parametri

type
AlarmType

tipo di allarme.

triggerAtMillis
Int64

tempo in millisecondi in cui l'allarme deve essere prima spento, utilizzando l'orologio appropriato (a seconda del tipo di allarme).

intervalMillis
Int64

intervallo in millisecondi tra le ripetizioni successive dell'allarme.

operation
PendingIntent

Azione da eseguire quando l'allarme si spegne; in genere proviene da PendingIntent#getBroadcast IntentSender.getBroadcast().

Attributi

Commenti

Pianificare un allarme ripetuto. <b>Nota: per le operazioni di intervallo (tick, timeout e così via) è più semplice e molto più efficiente usare android.os.Handler.</b> Se è già stato pianificato un allarme per lo stesso IntentSender, verrà prima annullato.

Come #set, ad eccezione di è anche possibile fornire un periodo in cui l'allarme si ripeterà automaticamente. Questo allarme continua a ripetersi fino a quando non viene rimosso in modo esplicito con #cancel. Se il tempo di attivazione indicato è passato, l'allarme verrà attivato immediatamente, con un conteggio degli allarmi a seconda della distanza trascorsa rispetto all'intervallo di ripetizione.

Se un allarme viene ritardato (per sospensione del sistema, ad esempio, per i tipi di allarme non _WAKEUP), una ripetizione ignorata verrà recapitata il prima possibile. Successivamente, gli allarmi futuri verranno recapitati in base alla pianificazione originale; non si allontanano nel tempo. Ad esempio, se è stato impostato un allarme ricorrente per la parte superiore di ogni ora, ma il telefono è stato addormentato dalle 7:45 alle 8:45, verrà inviato un allarme non appena il telefono si risveglia, l'allarme successivo verrà inviato alle 9:00.

Se l'applicazione vuole consentire la deviazione dei tempi di consegna per garantire che almeno un determinato intervallo di tempo intercorra sempre tra gli allarmi, l'approccio da adottare consiste nell'usare allarmi monouso, pianificando il successivo quando si gestisce ogni recapito dell'allarme.

<p class="note"><b Note:</b>> a partire dall'API 19, tutti gli allarmi ripetuti sono inesattivi. Se l'applicazione richiede tempi di recapito precisi, è necessario usare allarmi esatti una tantum, riprogrammando ogni volta come descritto in precedenza. Le applicazioni legacy le cui targetSdkVersion versioni precedenti all'API 19 continueranno ad avere tutti gli allarmi, inclusi gli allarmi ripetuti, considerati esattamente.

La destinazione Build.VERSION_CODES#S delle app dovrà impostare il flag PendingIntent#FLAG_MUTABLE sull'oggetto PendingIntent usato per impostare l'allarme, se si vuole che il numero di allarmi venga fornito con la chiave Intent#EXTRA_ALARM_COUNT.

Documentazione java per android.app.AlarmManager.setRepeating(int, long, long, android.app.PendingIntent).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Si applica a

Vedi anche

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