AlarmManager.SetRepeating(AlarmType, Int64, Int64, PendingIntent) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Agende um alarme de repetição.
[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
Parâmetros
- type
- AlarmType
tipo de alarme.
- triggerAtMillis
- Int64
tempo em milissegundos que o alarme deve disparar primeiro, usando o relógio apropriado (dependendo do tipo de alarme).
- intervalMillis
- Int64
intervalo em milissegundos entre as repetições subsequentes do alarme.
- operation
- PendingIntent
Ação a realizar quando o alarme disparar; normalmente vem de PendingIntent#getBroadcast
IntentSender.getBroadcast()
.
- Atributos
Comentários
Agende um alarme de repetição. <b>Nota: para operações de temporização (ticks, timeouts, etc) é mais fácil e muito mais eficiente de usar android.os.Handler
.</b> Se já houver um alarme agendado para o mesmo IntentSender, ele será primeiro cancelado.
Como #set
, exceto que você também pode fornecer um período no qual o alarme se repetirá automaticamente. Esse alarme continua se repetindo até ser explicitamente removido com #cancel
o . Se o tempo de disparo indicado estiver no passado, o alarme será disparado imediatamente, com uma contagem de alarme dependendo de quão longe no passado o tempo de gatilho é relativo ao intervalo de repetição.
Se um alarme for atrasado (por suspensão do sistema, por exemplo, para tipos de alarme não _WAKEUP), uma repetição ignorada será entregue o mais rápido possível. Depois disso, os alarmes futuros serão entregues de acordo com o cronograma original; eles não derivam com o tempo. Por exemplo, se você definiu um alarme recorrente para o topo de cada hora, mas o telefone estava em repouso das 7:45 até 8:45, um alarme será enviado assim que o telefone despertar, então o próximo alarme será enviado às 9:00.
Se o seu aplicativo quer permitir que os prazos de entrega se desviem, a fim de garantir que pelo menos um determinado intervalo de tempo sempre transcorra entre os alarmes, então a abordagem a ser tomada é usar alarmes únicos, agendando o próximo você mesmo ao lidar com cada entrega de alarme.
<p class="note"><b>Nota:</b> a partir da API 19, todos os alarmes repetidos são inexatos. Se o seu aplicativo precisa de prazos de entrega precisos, ele deve usar alarmes exatos únicos, reagendando cada vez conforme descrito acima. Aplicativos legados anteriores targetSdkVersion
à API 19 continuarão a ter todos os seus alarmes, incluindo alarmes repetidos, tratados como exatos.
A segmentação Build.VERSION_CODES#S
de aplicativos precisará definir o sinalizador no PendingIntent
que PendingIntent#FLAG_MUTABLE
está sendo usado para definir esse alarme, se eles quiserem que a contagem de alarmes seja fornecida com a chaveIntent#EXTRA_ALARM_COUNT
.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.
Aplica-se a
Confira também
- 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)