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.

  • Repetir alarmas cada lunes en Android usig AlarmManager / BroadcastReceiver
  • Android establece varias alarmas
  • ¿Alarm Manager persiste incluso después del reinicio?
  • Eventos de alarma Android se retrasan
  • Establecer una alarma desde mi aplicación
  • ¿Utilizar un receptor de difusión para iniciar AlarmManager en Android?
  • ¿Cómo actualizar un widget de aplicación en la medianoche?
  • Android: Cómo utilizar AlarmManager
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.