Android – Thread vs AlarmManager
Ok, así que estoy desarrollando una aplicación para Android con noticias. Cuando el usuario ejecuta la aplicación por primera vez, se ejecuta un subproceso independiente, se inicia un bucle de tiempo infinito (verdadero), dentro de un bucle un conector descarga texto de Internet a la notificación y envía esta notificación y luego duerme durante 8 horas. ¿Qué camino es mejor para hacer que funcione mejor, un hilo con el camino como arriba o administrador de alarmas? O, tal vez hay una manera diferente y mejor?
Por ahora he hecho dos maneras de probar, ambos funcionan bien, pero no tengo ni idea de cómo comprobar cuál es más eficiente, que no se matará por android, que come menos recursos, etc.
- Trabajos de fondo de Android para la sincronización con un servicio web
- Cómo deshacerse de la cámara se congela (SurfaceView)?
- ¿Debería un MediaPlayer ejecutarse en hilos separados?
- Comercio con método de declaración sincronizado en java?
- Cómo detener el hilo de ASyncTask en android
Y segunda pregunta, ¿hay alguna manera de restaurar el bucle cuando alguien mata la aplicación? Estaba probando con Advanced Task Killer Free y una aplicación Flashy (Flash Player Loader). Maté a la Flashy, pero 5 segundos más tarde la aplicación se estaba ejecutando de nuevo, por lo que propably es posible, pero ¿cómo?
Y para aquellos que piensan que estoy desarrollando anuncios molesto, la aplicación que estoy desarrollando solo lee noticias de Internet.
Espero que alguien ayude, Gracias de antemano.
- Android: Sincronización con el subproceso de procesador de OpenGL
- ¿Por qué el AsyncTask de mi servicio bloquea AsyncTasks de la actividad principal?
- Android AsyncTask onPostExecute fuera del hilo principal de ui
- Android Espresso waitFor .. y Thread.sleep () solución
- Cómo administrar Loopers y Threads (el hilo no muere más!)
- Actualización de Android TextView en subprocesos y ejecución
- Hilos de aplicación vs Hilos de servicio
- Esperando que el Cajón de Navegación se cierre antes de inicializar Fragmentos con el lazo vacío while
Thread vs AlarmManager
AlarmManager
Según el documento de Android
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.
Así que la ventaja que se obtiene aquí es que puede realizar una tarea específica en el futuro, incluso si la aplicación no está en estado de ejecución. (Aquí puede con orgullo llamar a ti mismo buen ciudadano android ya que no están residiendo en la memoria android para hacer su tarea) solo digo a android Quiero que esta tarea se ejecute en un momento determinado, Android iniciará automáticamente su aplicación en ese momento en particular, incluso si no se está ejecutando.
Si quieres lograr lo mismo con el hilo entonces tu hilo debe estar vivo hasta que la tarea de tiempo no empiece a ejecutarse. (La desventaja será Android no va a matar el hilo hasta que el proceso de tiempo está vivo y su huella innecesaria comer memoria) .
Espero que esto despeje su duda.
En su caso, sin duda utilizar el administrador de alarmas. Como regla general, si su aplicación "duerme" y comprueba rutinariamente el contenido nuevo en intervalos largos (8 horas es mucho tiempo), debe utilizar el administrador de alarmas.
De esta manera su aplicación no necesita ejecutarse en segundo plano, por lo que la vida de la batería se conserva, y la funcionalidad de la aplicación no se verá afectada por Android matar el servicio en casos de memoria baja.
Respecto a su segunda pregunta: si el sistema Android mata un servicio debido a la falta de memoria, se reiniciará lo antes posible. Sin embargo, si usted mata el servicio manualmente, entonces no debe reiniciarse, incluso si es posible a través de algún hack.
- ListView con Viewpager como un encabezado dentro de TabPageIndicator
- Cómo reproducir un video de Amazon S3 en Android App?