Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Ejecución periódica de la tarea (una vez al día / una vez a la semana)

Quiero ejecutar una tarea (es decir, obtener mi página de noticias del sitio web) periódicamente (una vez por semana / un día), incluso si mi solicitud está cerrada. ¿Es posible?

3 Solutions collect form web for “Ejecución periódica de la tarea (una vez al día / una vez a la semana)”

Sí lo es, usted necesita mirar el AlarmManager para configurar una "alarma" recurrente. Esto es mejor para la duración de la batería en el dispositivo, ya que a diferencia de un servicio que no se ejecuta constantemente en el fondo. La alarma activa un receptor de difusión que ejecutará su código personalizado.

Como nota final – hay valores de enumeración para el momento de la alarma, incluyendo diarios, medio diario y muchos más, aunque sólo puede establecer un valor real.

Un buen ejemplo se puede encontrar en el siguiente post SO:

Ejemplo del Administrador de alarmas

Actualizar

Se agregaron nuevas funciones a Android. Si está leyendo esto, entonces le aconsejo que ahora mire en GcmNetworkManager . Esto optimiza la vida de la batería y funciona pre-lollipop. Para Lollipop en adelante puede utilizar JobScheduler . Yo aconsejaría usar estas clases sobre el AlarmManager.

Creo que el mejor ajuste es GcmNetworkManager . Básicamente tiene todo lo que necesita de AlarmManager más persistencia, por lo que el trabajo puede continuar ejecutándose después de reiniciar.

Ejemplo:

PeriodicTask task = new PeriodicTask.Builder() .setService(MyTaskService.class) .setTag(TASK_TAG_PERIODIC) .setPeriod(5L) .build(); mGcmNetworkManager.schedule(task); 

Como alternativa estoy comparando la semana actual:

 Calendar cal = Calendar.getInstance(); int currentWeekOfYear = cal.get(Calendar.WEEK_OF_YEAR); SharedPreferences sharedPreferences= this.getSharedPreferences("appInfo", 0); int weekOfYear = sharedPreferences.getInt("weekOfYear", 0); if(weekOfYear != currentWeekOfYear){ SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putInt("weekOfYear", currentWeekOfYear); editor.commit(); // Your once a week code here } 

No estoy defendiendo esto es mejor que la solución de Alarma. Sólo estoy mostrando un enfoque diferente.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.