ExoPlayer deja de jugar en segundo plano

Tengo una aplicación que mantiene una instancia global de una instancia de ExoPlayer para facilitar flujos de audio en el fondo. Después de abrir muchas aplicaciones, el audio deja de reproducirse.

Sucede lo siguiente:

  • Abrir Activity que comienza a reproducir audio
  • Presione el botón Atrás para cerrar la Activity
  • El audio sigue reproduciéndose y sigue haciéndolo si deja el dispositivo solo (según lo previsto)

Sin embargo, cuando abra una docena o más aplicaciones después del último paso, el ExoPlayer detendrá la reproducción en algún momento. Mi suposición es que una limpieza de la memoria sucede y por lo tanto ExoPlayer consigue deallocated. Traté de obtener más información de los registros, pero que ha proporcionado poca ayuda hasta el momento.

Mantener una referencia de ExoPlayer dentro de un android.app.Service no hace ninguna diferencia.

El dispositivo en el que estoy probando es un Nexus 5 con Android 5.1.x, pero el problema también ocurre en otros dispositivos.

No pude encontrar una solución en las páginas de documentación de ExoPlayer , ni en StackOverflow ni en Google. ¿Alguien sabe la manera correcta de evitar que el ExoPlayer detenga la reproducción?

Para asegurarse de que un Service permanezca vivo lo más posible sin que el sistema lo mate, debe asegurarse de iniciarlo como un servicio de primer plano .

Esto significa que habrá una notificación informando al usuario del servicio activo para que pueda ser consciente de ello. Debido a eso, debe iniciar el servicio con una notificación correspondiente. Aquí está el ejemplo de los documentos:

 Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text), System.currentTimeMillis()); Intent notificationIntent = new Intent(this, ExampleActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); notification.setLatestEventInfo(this, getText(R.string.notification_title), getText(R.string.notification_message), pendingIntent); startForeground(ONGOING_NOTIFICATION_ID, notification); 
  • Cómo mostrar el mini controlador en la parte inferior o controles de medios persistentes como spotify o Google música en la aplicación completa
  • Reproducción de HLS con ExoPlayer
  • Exo player DASH Ejemplo de streaming
  • Cómo utilizar un solo jugador para los anuncios y el vídeo con google android Exoplayer
  • Cómo utilizar ExoPlayer
  • MPEG-TS H.264 con ExoPlayer
  • ¿Cómo evitar que el exoplayer se recargue en caso de retroceso?
  • En Android, usando exoplayer, ¿cómo rellenar surfaceview con un video que no tiene la misma relación de aspecto con el dispositivo?
  • Exoplayer tocando archivos m3u8 en Android
  • Uso del caché en ExoPlayer
  • ExoPlayer y comandos start / pause / seekTo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.