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

Definição

Agende um alarme repetido.

[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 em que o alarme deve primeiro desligar, 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 ser executada quando o alarme disparar; normalmente vem de PendingIntent#getBroadcast IntentSender.getBroadcast().

Atributos

Comentários

Agende um alarme repetido. <b>Observação: para operações de tempo limite (tiques, tempos limite 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á cancelado primeiro.

Assim como #set, exceto que você também pode fornecer um período em que o alarme será repetido automaticamente. Esse alarme continua repetindo até ser removido explicitamente com #cancel. Se o tempo de gatilho declarado estiver no passado, o alarme será disparado imediatamente, com uma contagem de alarmes dependendo de quão longe no passado o tempo do 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 a agenda original; eles não derivam ao longo do tempo. Por exemplo, se você tiver definido um alarme recorrente para a parte superior de cada hora, mas o telefone estava dormindo das 7:45 às 8:45, um alarme será enviado assim que o telefone acordar, então o próximo alarme será enviado às 9:00.

Se o aplicativo quiser permitir que os tempos de entrega descompassem para garantir que pelo menos um determinado intervalo de tempo sempre decorrido entre alarmes, a abordagem a ser tomada é usar alarmes únicos, agendando o próximo por conta própria ao lidar com cada entrega de alarme.

<b>Observação:</b> a partir da API 19, todos os alarmes recorrentes são inexactes. Se o aplicativo precisar de tempos de entrega precisos, ele deverá usar alarmes exatos únicos, reagendando cada vez, conforme descrito acima. Aplicativos herdados que targetSdkVersion são anteriores à API 19 continuarão a ter todos os seus alarmes, incluindo alarmes repetidos, tratados como exatos.

Os aplicativos direcionados Build.VERSION_CODES#S precisarão definir o sinalizador PendingIntent#FLAG_MUTABLE no PendingIntent que está sendo usado para definir esse alarme, se desejarem que a contagem de alarmes seja fornecida com a chave Intent#EXTRA_ALARM_COUNT.

Java documentação 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 Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

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)