¿Cuál es Better ScheduledExecutorService o AlarmManager en android?

Soy un principiante y estoy desarrollando una aplicación de Android que seguirá enviando SMS al usuario después de un cierto retraso (que es en días). Quiero que el usuario una vez registrado debe recibir el SMS, independientemente del hecho de que está conectado En o no. El contenido de SMS y el número de móvil se obtienen de la base de datos.Así que después de investigar encontré dos formas

  1. ScheduledExecutorService

  2. AlarmManager

El problema es que alarmManager se apagará cuando el teléfono esté apagado o reiniciado. ¿Es este el caso con ScheduledExecutorService también? ¿Y cuántos hilos debo utilizar en el ThreadPool mientras uso el servicio de Executor?

Administrador de alarmas

El Administrador de Alarma tiene un bloqueo de la onReceive() CPU siempre y cuando el método onReceive() del receptor de alarma esté ejecutándose. Esto garantiza que el teléfono no se parará hasta que haya terminado de manejar la emisión. Una vez que onReceive() devuelve, el Administrador de Alarma libera este bloqueo de despertador. Esto significa que, en algunos casos, el teléfono se dormirá tan pronto como se onReceive() método onReceive() . Si su receptor de alarma llamó Context.startService() , es posible que el teléfono se detenga antes de que se inicie el servicio solicitado. Para evitar esto, su BroadcastReceiver y Service necesitarán implementar una política de bloqueo de la sesión independiente para asegurar que el teléfono continúe funcionando hasta que el servicio esté disponible.

ProgramadoThreadPoolExecutor.

Puede utilizar java.util.Timer or ScheduledThreadPoolExecutor (preferido) para programar una acción que se produzca a intervalos regulares en un subproceso de fondo.

A continuación, se muestra una muestra que utiliza este último:

 ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor(); scheduler.scheduleAtFixedRate (new Runnable() { public void run() { // call service } }, 0, 10, TimeUnit.MINUTES); 

Así que preferí ScheduledExecutorService

Pero si las actualizaciones se producirán mientras su aplicación se está ejecutando, puede utilizar un temporizador, como se sugiere en otras respuestas, o la más reciente ScheduledThreadPoolExecutor. Si su aplicación se actualiza incluso cuando no está en ejecución, debe ir con el AlarmManager.

El Administrador de alarmas está diseñado para casos en los que desea que el código de la aplicación se ejecute en un momento específico, incluso si su aplicación no se está ejecutando actualmente.

Tome en cuenta que si usted planea actualizar cuando su aplicación está apagada, una vez cada diez minutos es bastante frecuente, y por lo tanto, posiblemente un poco de consumo de energía.

También echa un vistazo a este post.

  • ¿Llamando startActivity () desde fuera de una Actividad?
  • Android, ¿Cómo cancelar una alarma? AlarmManager.cancel no funciona
  • Actualizar widget a la medianoche (12 AM) falla
  • ¿En qué se utiliza "requestCode" en PendingIntent?
  • ¿Cómo mantener una conexión TCP establecida indefinidamente?
  • Intento pendiente de obtener servicio
  • Administrador de alarmas y notificación en android
  • ¿Cómo iniciar una notificación junto con AlarmManager?
  • AlarmManager estático en Android
  • ¿Cómo puedo pasar correctamente los extras exclusivos a una intención pendiente?
  • PendingIntent obtener requestCode
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.