MediaPlayer TimeoutException
He hecho una aplicación de Android y ahora está en Google Play. Pero ahora alguien reportó un Crash, y el stacktrace dijo lo siguiente:
java.util.concurrent.TimeoutException: android.media.MediaPlayer.finalize() timed out after 10 seconds at android.media.MediaPlayer.native_finalize(Native Method) at android.media.MediaPlayer.finalize(MediaPlayer.java:1960) at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:187) at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:170) at java.lang.Thread.run(Thread.java:856)
Y no hay ninguna señal de algún código de uno de mis paquetes. Yo uso la clase MediaPlayer. ¿Alguien que pueda ayudarme aquí?
- cómo poner el botón al lado de actividad titile en android?
- Error: Tiempo de espera esperando para bloquear caché de clase buildscript para el archivo de construcción cuando cambia minSdkVersion
- Android: CursorLoader, LoaderManager, SQLite
- Cómo analizar la cadena "Mon Aug 08 16:44:19 EAT 2016" hasta la fecha en android
- Cómo administrar adecuadamente contextos para una aplicación de Android (clases sin actividad)
Jesse.
- ¿Cuál sería un método para crear un contador de números en Android?
- Descripción de la anotación @SuppressLint ("NewApi")
- Cómo generar un entero con los métodos de TextView?
- ¿Está "bien" agregar la última palabra clave a un método heredado / anulado?
- ¿Cuál es la convención para nombres de paquetes java sin una asociación de dominio?
- Cómo evitar el encadenamiento de varias llamadas AsyncTask?
- Utilice el filtro de Kalman de Apache Commons para la estratificación del posicionamiento 2D
- Caché de objetos de Android
Llame a MediaPlayer.release()
en su código (por ejemplo, en Activity.onPause()
). MediaPlayer.finalize()
menos trabajo en MediaPlayer.finalize()
y la excepción desaparecerá.
Para capturar este error, puede implementar un android.media.MediaPlayer.OnErrorListener en su Fragmento o Actividad.
/* * Called to indicate an error. Parameters * * mp the MediaPlayer the error pertains to what the type of error that has * occurred: MEDIA_ERROR_UNKNOWN MEDIA_ERROR_SERVER_DIED extra an extra * code, specific to the error. Typically implementation dependant. Returns * True if the method handled the error, false if it didn't. Returning * false, or not having an OnErrorListener at all, will cause the * OnCompletionListener to be called. */ @Override public boolean onError(MediaPlayer mp, int what, int extras) { return true; }
Cuando crea su MediaPlayer asegúrese de llamar
mediaPlayer.setOnErrorListener(this);
Algunos pensamientos:
- ¿Has localizado qué hilo está haciendo esto? Parece que no es el hilo principal de la interfaz de usuario y que debería ser capaz de captar esa excepción.
- Al igual que la respuesta anterior, deberías considerar repensar cuando sueltes tu reproductor.
- Un error que todavía estoy enfrentando es con el servicio de audioflinger. Hace que todos los reproductores multimedia en ejecución pasen a estado de error (manejado con el código de error (100, 0)). El jugador entra en estado de error y no puedo reanudar la forma en que fue
Creo que el proceso mediaserver en el cliente se ha estrellado.
- ¿Google ofrece una API que puedo usar para obtener la ubicación de mi teléfono?
- La biblioteca de escaneo de códigos de barras ZBAR no funciona cuando se usa la versión 23 de sdk de destino en gradle