AlarmManager.SetRepeating(AlarmType, Int64, Int64, PendingIntent) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
.
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)