Error: YouTubeService ha filtrado IntentReceiver … ¿Te ha faltado una llamada a unregisterReceiver ()?
Utilizo la API de YoutubeServie para reproducir vídeos de youtube en mi aplicación de Android. Sin embargo, cuando salgo de mi actividad, encontré el siguiente registro de fallos, incluso mi aplicación sigue funcionando.
02-28 15:54:02.081 20374-20374/? E/ActivityThread: Service com.google.android.youtube.api.service.YouTubeService has leaked IntentReceiver com.google.android.libraries.youtube.player.audiofocus.HeadsetPlugReceiver@a843e7c that was originally registered here. Are you missing a call to unregisterReceiver()? android.app.IntentReceiverLeaked: Service com.google.android.youtube.api.service.YouTubeService has leaked IntentReceiver com.google.android.libraries.youtube.player.audiofocus.HeadsetPlugReceiver@a843e7c that was originally registered here. Are you missing a call to unregisterReceiver()? at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:898) at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:699) at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1637) at android.app.ContextImpl.registerReceiver(ContextImpl.java:1617) at android.app.ContextImpl.registerReceiver(ContextImpl.java:1611) at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:488) at com.google.android.libraries.youtube.player.service.PlaybackService.<init>(PlaybackService.java:5034) at com.google.android.libraries.youtube.player.PlayerInjector$12.create(PlayerInjector.java:1602) at com.google.android.libraries.youtube.common.util.Lazy.get(Lazy.java:136) at com.google.android.libraries.youtube.player.PlayerInjector.getPlaybackService(PlayerInjector.java:575) at com.google.android.apps.youtube.api.ApiPlayer.moveToForeground(ApiPlayer.java:493) at com.google.android.apps.youtube.api.ApiPlayer.<init>(ApiPlayer.java:150) at com.google.android.apps.youtube.api.service.jar.ApiPlayerService.<init>(ApiPlayerService.java:131) at com.google.android.apps.youtube.api.service.jar.ApiPlayerFactoryService$1.run(ApiPlayerFactoryService.java:86) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 02-28 15:54:02.088 20374-20374/? E/ActivityThread: Service com.google.android.youtube.api.service.YouTubeService has leaked IntentReceiver com.google.android.libraries.youtube.player.audiofocus.AudioBecomingNoisyReceiver@379c216f that was originally registered here. Are you missing a call to unregisterReceiver()? android.app.IntentReceiverLeaked: Service com.google.android.youtube.api.service.YouTubeService has leaked IntentReceiver com.google.android.libraries.youtube.player.audiofocus.AudioBecomingNoisyReceiver@379c216f that was originally registered here. Are you missing a call to unregisterReceiver()? at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:898) at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:699) at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1637) at android.app.ContextImpl.registerReceiver(ContextImpl.java:1617) at android.app.ContextImpl.registerReceiver(ContextImpl.java:1611) at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:488) at com.google.android.libraries.youtube.player.service.PlaybackService.<init>(PlaybackService.java:4043) at com.google.android.libraries.youtube.player.PlayerInjector$12.create(PlayerInjector.java:1602) at com.google.android.libraries.youtube.common.util.Lazy.get(Lazy.java:136) at com.google.android.libraries.youtube.player.PlayerInjector.getPlaybackService(PlayerInjector.java:575) at com.google.android.apps.youtube.api.ApiPlayer.moveToForeground(ApiPlayer.java:493) at com.google.android.apps.youtube.api.ApiPlayer.<init>(ApiPlayer.java:150) at com.google.android.apps.youtube.api.service.jar.ApiPlayerService.<init>(ApiPlayerService.java:131) at com.google.android.apps.youtube.api.service.jar.ApiPlayerFactoryService$1.run(ApiPlayerFactoryService.java:86) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5221) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Ninguno de los códigos son de la aplicación de minas, pero todos están en la biblioteca. No he registrado ningún receptor en mi código, así que no puedo anular el registro de nada en mi fragmento que funcione con el youtubeservice.
- ¿Cómo subir videos a youtube en android?
- API de datos de Youtube: Obtenga acceso al flujo multimedia ya la reproducción (JAVA)
- YouTubePlayerView en un ScrollView
- Solicitud de lote con youtube api: obtenga la información de vídeo más reciente de varios canales
- Youtube SDK se bloquea con DeadObjectException cuando se mueve a la aplicación de youtube
Creo que el problema es similar a https://groups.google.com/forum/#!topic/android-developers/6gzpwkaRgoE pero no hay respuesta. ¿Alguna idea de cómo deshacerse de este bloqueo interno de youtube.api.service?
- Clave de la API de Youtube
- NullPointerException en super.onStart ()
- No es capaz de recuperar buena calidad de vídeo url de youtube api en android appf
- YouTubePlayerSupportFragment inicia actividad duplicada
- Error al ejecutar 'postMessage' en el mensaje 'DOMWindow' en Android
- Youtube Api android autostart
- Modo correcto de usar YouTube.Builder
- Haciendo un perfecto reproductor Youtube de Chromeless en Android
Incluso si no registra manualmente ningún receptor, una actividad puede registrarlo para usarlo de alguna manera en la actividad actual. Creo que deberías llamar al método unregisterReceiver () on onPause () .
Tenga en cuenta que onDestroy () y onStop () no están garantizados para ser llamados. Si se llama OnPause (), la actividad ya no está en primer plano.
OnStop ():
Se llama cuando ya no es visible para el usuario. A continuación, recibirá OnRestart (), onDestroy (), o nada, dependiendo de la actividad posterior del usuario. Tenga en cuenta que este método nunca se puede llamar en situaciones de memoria baja en las que el sistema no tiene suficiente memoria para mantener el proceso de su actividad en ejecución después de que se llama a su método onPause ().
Para más información, aquí está el enlace: http://developer.android.com/reference/android/app/Activity.html#onStop%28%29
Afortunadamente, también encontré algunos elementos de stackoverflow a los que puedes referirte:
- Actividad ha filtrado IntentReceiver que se registró originalmente aquí. ¿Le falta una llamada para anular el registroReceiver ()?
- No se puede reproducir el video de youtube en mi aplicación de Android
- ¿Le falta una llamada para anular el registroReceiver ()? En android
Espero que esto sea de ayuda.
He resuelto esto:
En manifest.xml Declare algo como esto.
<activity android:name=".YouTubeActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:screenOrientation="landscape" android:theme="@style/AppTheme.NoActionBar" />
- Subir varias aplicaciones de APK con google play api usando fastlane supply
- Diferencia entre el rastreo de métodos de Android Monitor y el monitor de dispositivos Android