Ejecutar una Función cada 5 Segundos u Otra cantidad de Tiempo en Android

Android | | Comunidad: Crear un Post, Eventos Devs, Foro

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

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

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

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

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.

Newsletter

Suscríbete a Nuestro Boletín de Novedades:

(Luego de la suscripción no te va salir ningun mensaje. Solo revisa tu bandeja de Correo para confirmar tu suscripción)
* indicates required
Subscribirse
Notificar a
guest
8 Comments
antiguos
nuevos más votado
Inline Feedbacks
View all comments
yasser
yasser
5 meses atrás

como se podria hacer para que se ejecute cuando termine otra funcion

Javier
Javier
5 meses atrás

disculpe y ahora para cancelarlo?

Javier
Javier
Reply to  Nube Colectiva
4 meses atrás

lo que pasa es que no hay el runnable, todo se va por el this y al momento de hacer un handler.removeCallback()…no hay un runnable para meter y no acepta el this… mi aplicacion es con text to speech .. y cada cierto tiempo me tiene que decir mi ubicacion..

Javier
Javier
Reply to  Javier
4 meses atrás

public class MainActivity extends AppCompatActivity { TextView latitud, longitud; TextView direccion; TTSManager ttsManager; private final int TIEMPO =8000; Handler handler = new Handler(); Handler handler2 = new Handler(); Runnable r; Runnable r2; Button btnCancelar,btnActivar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ttsManager = new TTSManager(this); ttsManager.init(this); btnCancelar = findViewById(R.id.btnCancelar); ejecutarInicio(); btnCancelar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { EliminarEjecutarTarea(); } }); btnActivar = findViewById(R.id.btnActivar); btnActivar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ejecutarInicio(); } }); latitud = findViewById(R.id.txtLatitud); longitud = findViewById(R.id.txtLongitud); direccion = findViewById(R.id.txtDireccion); if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new… Leer más »

Javier
Javier
Reply to  Javier
4 meses atrás

mi codigo si esque me podes ayudar.. y tambien nescesito asesoria para un proyecto de la Universidad sobre el mismo tema .. algun correo para poder contarte y comentarte del tema

Last edited 4 meses atrás by Javier