Get it on Google Play

Desarrollo Android: Hacer que una tarea se ejecute periodicamente

23-09-2014
 

Android Logo

Si queremos hacer que una tarea se ejecute periodicamente o al cabo de X tiempo, por ejemplo: Hacer que nuestra aplicación compruebe si hay nuevos posts cada hora o recordar que hay que cambiar el ticket de la hora.

Para hacer esto el API de Android nos provee de ‘AlarmManager’. En el siguiente ejemplo se muestra como se configura que se ejecute ‘CheckPostsReceiver’ para que se ejecute cada dos horas:

int interval = 1000*60*60*2; /* dos horas */

AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

Intent alarmIntent = new Intent(context, CheckPostsReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0);

manager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), interval, pendingIntent);

Fijaos que el método ‘setRepeating’ tiene 4 parámetros:

-Tipo de alarma: Existen 4 tipos que básicamente se diferencian entre si por si la hora de inicio es la hora exacta o un intervalo y si el el teléfono debe encenderse o no.
-Inicio: En mili-segundos, tiempo de espera si el tipo de alarma es ‘ELAPSED_REALTIME’ o hora concreta si es ‘RTC’ (Como en el ejemplo).
-Intervalo: En milisegundos.
-Intent a lanzar: Pues eso, el PendingIntent a lanzar.

La clase ‘CheckPostsReceiver’ quedaría de la siguiente manera para que ejecutara la tarea en segundo plano(Así no bloquea el dispositivo):

public class CheckPostsReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context arg0, Intent arg1) {

        new MyNotificationTask( arg0 ).execute();

    }
}

class MyNotificationTask extends AsyncTask<String, Void, String> {

   @Override
    protected String doInBackground(String... params) {
 	/* Aquí el código de lo que tenga que hacer */
	}

}

Comments

One Response to “Desarrollo Android: Hacer que una tarea se ejecute periodicamente”
  1. erick says:

    Muchas gracias por compartir la ayuda, si no fuera mucha molestia como podría implementarlo en el Android Studio, es decir en que posición van los códigos, Saludos.

Leave a Reply

© Albert Coronado Calzada