Ejecutar una Función cada 5 Segundos u Otra cantidad de Tiempo en Android
Demo
Cuando estas desarrollando una aplicación Android, en algunas ocasiones necesitas que una función sea ejecutada cada ciertos segundos, para este artículo podemos definir el tiempo de 5 segundos, el tiempo lo puedes definir tu, no hay problema, mediante Java en Android Studio vamos a explicar como hacer que se lleve acabo dicha tarea, vamos con el artículo.
Existen muchas formas de ejecutar una tarea cada 5 segundos o el tiempo que desees en Android, en este artículo te mostraremos una manera de las distintas que existen.
Antes de crear esta funcionalidad, debes de saber que es lo que quieres hacer, por ejemplo nosotros necesitamos que la ubicación de un conductor se actualice cada 5 segundos en un Mapa de Google.
Primero creamos el objeto Handler, colócalo al inicio de la clase principal de tu Activity
1 2 3 4 5 6 7 8 9 10 11 12 |
public class Home extends AppCompatActivity implements Animation.AnimationListener, GoogleMap.OnCameraIdleListener{ private static final String TAG = "MainActivity"; Handler handler = new Handler(); // En esta zona creamos el objeto Handler private ProgressBar _progressBar; } |
Ahora vamos a dirigirnos a nuestro método onMapReady(), que es una interface que ejecutará tareas cuando nuestro mapa de Google este listo, también lo pueden colocar (si es necesario), cuando la vista se crea es decir en el método OnCreate() si no tienes el método onMapReady() puedes crearlo.
Dentro de nuestro método onMapReady() colocaremos el nombre de la función que realizará la tarea cada 5 segundos, llamaremos a esta función ejecutarTarea()
1 2 3 4 5 6 7 |
public void onMapReady() { ejecutarTarea(); } |
Luego creamos la función ejecutarTarea() que será llamada dentro del método onMapReady()
Antes de crear la función ejecutarTarea(), creamos una variable llamada TIEMPO en donde especificamos el tiempo en que debe de ejecutar la tarea o la función ejecutarTarea(), la variable la creamos como privada final int y le asignamos el tiempo de 5 segundos que sería el equivalente a 5000
1 2 3 |
private final int TIEMPO = 5000; |
En este punto pasamos a crear nuestra función ejecutarTarea()
Lo que haremos será aplicar un retraso con el método postDelayed() a un handler o manejador dentro de una interfaz Runnable() que tendrá dentro de si un método sin argumentos llamado run()
Dentro del método run() colocamos la función actualizarChofer() esta función realizará la tarea de refrescar la ubicación de un conductor, lógicamente cada 5 segundos en una mapa de Google
La función actualizarChofer() o cualquiera sea la tarea que necesites realizar, obviamente se crea en otra línea de nuestro código, para este articulo creamos la función actualizarChofer() que ejecuta tareas para refrescar la ubicación del conductor en el mapa de Google, entonces esta tarea se va realizar cada 5 segundos en nuestro método onMapReady() que mencionamos mas arriba.
La función actualizarChofer() no la explayaremos tanto, ya que la idea de este artículo es mostrar como se ejecuta una tarea cada 5 segundos o el tiempo que desees establecer.
Al final de ejecutar el segundo handler.postDelayed() llamamos a la variable TIEMPO y también al final llamamos a la variable TIEMPO, antes de terminar nuestra función ejecutarTarea(), con estas variables le asignamos el tiempo en que debe realizar la tarea, cada segundos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
private final int TIEMPO = 5000; public void ejecutarTarea() { handler.postDelayed(new Runnable() { public void run() { // función a ejecutar actualizarChofer(); // función para refrescar la ubicación del conductor, creada en otra línea de código handler.postDelayed(this, TIEMPO); } }, TIEMPO); } |
Eso es todo, ustedes pueden crear la tarea que deseen se realice cada 5 segundos o el tiempo que deseen.
Se suele usar esta funcionalidad para recargar datos en tiempo real como refrescar un conductor en el mapa de Google (Uber, Easy Taxy, etc.), mediante una petición a un servicio de tipo HTTP POST, GET, PUT.
También para alarmas, que cada cierto tiempo envíe un sonido al usuario, en verdad se le puede dar muchos usos, pero solo depende de ustedes lo que quieran realizar.
Notas
- Las funciones y utilidades de Android mencionadas pueden quedar obsoletas o seguir disponibles, esto no depende de nosotros si no de los desarrolladores que dan soporte a Android.
- Puedes ver la Demo que esta al inicio de este artículo.
Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.
- Android
- 26-02-2019
- 26-02-2019
- Crear un Post - Eventos Devs - Foro