Share via


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

Definición

Programe una alarma repetida.

[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

hora 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 va a realizar cuando se apaga la alarma; normalmente procede de PendingIntent#getBroadcast IntentSender.getBroadcast().

Atributos

Comentarios

Programe una alarma repetida. <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 , salvo que también puede proporcionar un período en el que la alarma se repetirá automáticamente. Esta alarma continúa repitiendo hasta que se quita explícitamente con #cancel. Si el tiempo de desencadenador indicado está en el pasado, la alarma se desencadenará inmediatamente, con un recuento de alarmas en función de la distancia en el pasado el tiempo del desencadenador sea relativo al 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, se entregarán futuras alarmas según la programación original; no se desfase 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 de un solo uso, programar el siguiente usted mismo al controlar cada entrega de alarma.

<p class="note"><b>Note:</b> as of 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.

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

Documentación de Java 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 proyecto de código y se usan según los términos descritos en la creative Commons 2.5.

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)