Necesito realizar algunos códigos en intervalos regulares (conectarme a un servidor y extraer datos de la base de datos MySQL cada minuto). Para este fin tengo una clase de sincronización:Android: ejecutar código en intervalos regulares
public class Sync {
static private Handler handler = new Handler();
Runnable task;
public Sync(Runnable task, long time) {
this.task = task;
handler.removeCallbacks(task);
handler.postDelayed(task, time);
}
}
y en mi Actividad tengo:
public void onCreate(Bundle savedInstanceState) {
...
Sync sync = new Sync(call,60*1000);
...
}
final private Runnable call = new Runnable() {
public void run() {
//This is where my sync code will be, but for testing purposes I only have a Log statement
Log.v("test","this will run every minute");
}
};
He intentado esto con un período de tiempo más corto para la prueba, pero sólo se ejecuta una vez. Cuando registra el mensaje por primera vez, también es el último. ¿Alguien ve lo que estoy haciendo aquí? ¡Gracias!
scheduleWithFixedDelay de ScheduledThreadPoolExecutor es una opción más. –