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?

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.

  • Servicio enlazado a BroadcastReceiver
  • Propiedades duplicadas después de la actualización de la aplicación. ¿Las alarmas sobreviven?
  • Cómo configurar Alarma para días laborables en android
  • Lollipop API para controlar el icono de alarma en la barra de estado
  • Parte-1 persistente foreGround servicio androide que comienza por la interfaz de usuario, funciona en modo de suspensión también, también comienza en el reinicio del teléfono
  • Actualizando la alarma de la intención pendiente en android
  • Mostrar diálogo utilizando PendingIntent
  • Programáticamente activar la pantalla en android
  • AlarmManager no funciona correctamente
  • Control del icono de alarma en la barra de estado
  • AlarmManager.RTC_WAKEUP no funciona para algunos dispositivos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.