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

Definición

Programar una alarma de repetición.

[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 alarma.

triggerAtMillis
Int64

tiempo en milisegundos que la alarma debe apagarse, utilizando el reloj adecuado (dependiendo del tipo de alarma).

intervalMillis
Int64

intervalo en milisegundos entre repeticiones posteriores de la alarma.

operation
PendingIntent

Acción que se debe realizar cuando se apaga la alarma; normalmente procede de PendingIntent#getBroadcast IntentSender.getBroadcast().

Atributos

Comentarios

Programar una alarma de repetición. <b>Nota: para las operaciones de control de tiempo (tics, tiempos de espera, etc.), es más fácil y mucho más eficaz usar android.os.Handler.</b> Si ya hay una alarma programada para el mismo IntentSender, primero se cancelará.

Al igual #setque , excepto que también puede suministrar un período en el que la alarma se repetirá automáticamente. Esta alarma continúa repitiendo hasta que se quite explícitamente con #cancel. Si el tiempo de desencadenador indicado está en el pasado, la alarma se desencadenará inmediatamente, con un recuento de alarmas dependiendo de la distancia en el pasado el tiempo del desencadenador en relación con el intervalo de repetición.

Si se retrasa una alarma (por suspensión del sistema, por ejemplo, para tipos de alarma no _WAKEUP), se entregará una repetición omitida lo antes posible. Después de eso, las alarmas futuras se entregarán según la programación original; no se desfasan con el tiempo. Por ejemplo, si ha establecido una alarma periódica para la parte superior de cada hora, pero el teléfono estaba dormido de 7:45 hasta las 8:45, se enviará una alarma tan pronto como se despierte el teléfono, se enviará la siguiente alarma a las 9:00.

Si la aplicación quiere permitir que los tiempos de entrega se desfase con el fin de garantizar que al menos un intervalo de tiempo determinado siempre transcurre entre alarmas, el enfoque que se debe tomar es usar alarmas únicas, programando el siguiente usted mismo al controlar cada entrega de alarma.

<b>Nota:</b> a partir de la API 19, todas las alarmas repetidas son inexactas. Si la aplicación necesita tiempos de entrega precisos, debe usar alarmas exactas de un solo uso, reprogramando cada vez, como se ha descrito anteriormente. Las aplicaciones heredadas cuya targetSdkVersion versión anterior a la API 19 seguirán teniendo todas sus alarmas, incluidas las alarmas repetidas, tratadas como exactas.

Las aplicaciones destinadas Build.VERSION_CODES#S a tendrán que establecer la marca PendingIntent#FLAG_MUTABLE en el PendingIntent que se usa para establecer esta alarma, si quieren que el recuento de alarmas se proporcione con la clave Intent#EXTRA_ALARM_COUNT.

Java documentación para android.app.AlarmManager.setRepeating(int, long, long, android.app.PendingIntent).

Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.

Se aplica a

Consulte también

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