La forma estándar de Java de usar temporizadores a través de java.util.Timer y java.util.TimerTask funciona bien en Android, pero debe tener en cuenta que este método crea un nuevo hilo.
Puede considerar utilizar la clase Handler muy conveniente (android.os.Handler) y enviar mensajes al controlador a través de sendMessageAtTime(android.os.Message, long)
o sendMessageDelayed(android.os.Message, long)
. Una vez que reciba un mensaje, puede ejecutar las tareas deseadas. La segunda opción sería crear un objeto Runnable y programarlo mediante las funciones de Handler postAtTime(java.lang.Runnable, long)
o postDelayed(java.lang.Runnable, long)
.
Sí, se puede usar el temporizador de Java , pero como la pregunta pide una mejor manera (para dispositivos móviles). Lo cual se explica aquí .
Por el bien de StackOverflow:
Como Timer crea un nuevo hilo, puede considerarse pesado,
si todo lo que necesita es conseguir es una llamada de vuelta, mientras que la actividad se está ejecutando un manejador puede ser usado en conjunción con una
Ejecutable :
o un mensaje
en una nota al margen, este enfoque se puede usar, si desea ejecutar un fragmento de código en el hilo de la interfaz de usuario desde otro hilo.
si necesita que le devuelvan la llamada incluso si su actividad no se está ejecutando, puede usar un AlarmManager
fuente
Como lo he visto, java.util.Timer es el más utilizado para implementar un temporizador.
Para una tarea repetitiva:
Para una sola ejecución de una tarea:
la tarea es el método que se ejecutará
después del tiempo de ejecución inicial
( intervalo del tiempo para repetir la ejecución)
fuente
task
puede ser una instancia de su clase que hereda de java.util.TimerTask y reemplazavoid run()
.Espero que esto sea útil y que requiera menos esfuerzo implementarlo, clase Android CountDownTimer
p.ej
fuente
Probablemente
Timerconcept
o
Método 2 ::
Programe el temporizador
Agregue una nueva variable de tiempo con nombre int. Configúrelo en 0. Agregue el siguiente código a la función onCreate en MainActivity.java.
Ingrese al método de ejecución y agregue el siguiente código.
fuente
Es situacional.
La documentación de Android sugiere que debe usar AlarmManager para registrar una Intención que se disparará a la hora especificada si su aplicación no se está ejecutando.
De lo contrario, debe usar Handler.
fuente
Nuestra 1ra clase
Nuestra 2da clase
fuente
Soy un novato en Android, pero aquí está la clase de temporizador que creé en base a las respuestas anteriores. Funciona para mi aplicación, pero agradezco cualquier sugerencia.
Ejemplo de uso:
fuente
Estoy usando un controlador y ejecutable para crear un temporizador. Envuelvo esto en una clase abstracta. Simplemente deríbalo / impleméntalo y listo:
Tenga en cuenta que
handler.postDelayed
se llama antes del código que se ejecutará; esto hará que el temporizador esté más cerrado como "esperado". Sin embargo, en los casos en que el temporizador se ejecuta con frecuencia y la tarea (onTimer()
) es larga, puede haber superposiciones. Si desea comenzar a contarintervalMS
después de que la tarea haya terminado, mueva laonTimer()
llamada una línea arriba.fuente
Creo que la forma de hacer esto en Android es que necesita un servicio en segundo plano para ejecutarse. En esa aplicación de fondo, cree el temporizador. Cuando el temporizador "marque" (establezca el intervalo de cuánto tiempo desea esperar), inicie la actividad que desea comenzar.
http://developer.android.com/guide/topics/fundamentals.html (<- este artículo explica la relación entre actividades, servicios, intenciones y otros fundamentos básicos del desarrollo de Android)
fuente
Solía usar (
Timer
,TimerTask
) así comoHandler
iniciar tareas (que consumen mucho tiempo) periódicamente. Ahora he cambiado todo a RxJava. RxJava proporcionaObservable.timer
cuál es más simple, menos propenso a errores y fácil de usar.fuente
Para la operación de temporización, debe usar Handler .
Si necesita ejecutar un servicio en segundo plano, AlarmManager es el camino a seguir.
fuente
este ejemplo inicia la unidad de temporizador destruida en Kotlin
Cancele el horario en onDestroy ()
fuente