Compartilhar via


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

Definição

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 #cancelo . 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.

Documentação Java para android.app.AlarmManager.setRepeating(int, long, long, android.app.PendingIntent).

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)