Por lo tanto, estoy transmitiendo música en un hilo separado. Si salgo de la aplicación (onPause()
, onStop()
llamándome, etc.), la música continúa sonando, pero al final, después de abrir otras aplicaciones y alternar entre ellas y volver a la pantalla de inicio, mi aplicación muere. Sin fallas, solo un WIN DEATH
y process com.myapp.android has died
en logcat. Obviamente, es legítimo que el sistema destruya las aplicaciones para recuperar recursos.MediaPlayer en el hilo separado vs ejecutando en el servicio a través de startForeground()
Mi pregunta es: ¿ejecutar cosas en un hilo fuera del hilo principal (UI) significa que ahora tiene menos prioridad en lo que respecta al sistema? Es decir, ¿es más probable que se muera que si ejecuto el reproductor multimedia en un Service
e incluso uso startForeground()
para hacer que el servicio se ejecute en primer plano?
¡Cualquier idea o aclaración sería muy apreciada!
EDITAR
Además, parte de la documentación relativa a los servicios que me confunde. En su parte pertinente, establece:
Precaución: Un servicio se ejecuta en el hilo principal de su proceso en el servicio alojamiento no crea su propio hilo y no se ejecuta en un proceso independiente (a menos que se especifique lo contrario) Esto significa que, si su servicio va a hacer un trabajo intensivo de CPU o bloquear operaciones (como reproducción de MP3 o redes), debe crear un nuevo subproceso dentro del servicio para hacer ese trabajo.
Siempre he ejecutado la reproducción de MP3 en un servicio en el hilo principal y la interfaz de usuario sigue siendo receptiva. Si se supone que debo ponerlo en un hilo separado como se recomienda en la cita anterior, entonces no volveré al punto donde comencé, es decir, con la reproducción de medios fuera del hilo principal, aumentando así la probabilidad de que la reproducción muere cuando se abren otras aplicaciones, etc.?
Gracias! ¿Puedes abordar mi edición? – LuxuryMode
He colocado mi reproductor multimedia dentro de un servicio y fuera de uno ejecutándose en su propio hilo. Android matará al reproductor multimedia independientemente de dónde se encuentre si necesita más recursos. Y no es menos probable que se mate en un servicio que tiene prioridad de primer plano que en un hilo separado. El único lugar donde parece que nunca mueren es en una actividad que actualmente está en primer plano. – AndroidDev