Java Youtube Api崩溃,Youtube服务泄露了IntentReceiver

Java Youtube Api崩溃,Youtube服务泄露了IntentReceiver,java,android,youtube-api,broadcastreceiver,Java,Android,Youtube Api,Broadcastreceiver,我已经用YoutubeApi构建了一个原生android应用程序。 有时,当我从另一个活动返回到另一个活动时 对于youtubePlayer片段(YouTubePlayerSupportFragment),它会崩溃,并显示以下消息: 05-19 15:43:10.869 4009-4009/? E/ActivityThread: Service com.google.android.youtube.api.service.YouTubeService has leaked IntentRecei

我已经用YoutubeApi构建了一个原生android应用程序。 有时,当我从另一个活动返回到另一个活动时 对于youtubePlayer片段(YouTubePlayerSupportFragment),它会崩溃,并显示以下消息:

05-19 15:43:10.869 4009-4009/? E/ActivityThread: Service com.google.android.youtube.api.service.YouTubeService has leaked IntentReceiver vsi@26900cf 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 vsi@26900cf that was originally registered here. Are you missing a call to unregisterReceiver()?
        at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:1333)
        at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:1114)
        at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1405)
        at android.app.ContextImpl.registerReceiver(ContextImpl.java:1378)
        at android.app.ContextImpl.registerReceiver(ContextImpl.java:1366)
        at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:603)
        at wyy.<init>(SourceFile:53)
        at wzg.get(SourceFile:32)
        at adzu.get(SourceFile:10)
        at hog.a(SourceFile:26)
        at hpb.a(SourceFile:881)
        at hnz.<init>(SourceFile:13)
        at com.google.android.apps.youtube.embeddedplayer.service.service.jar.ApiPlayerService.<init>(SourceFile:60)
        at com.google.android.apps.youtube.embeddedplayer.service.service.jar.ApiPlayerFactoryService$1.run(SourceFile:10)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
05-19 15:43:10.889 1960-1988/? W/Looper: Dispatch took 500ms on android.ui, h=Handler (com.android.server.am.ActivityManagerService$UiHandler) {53d8b6e} cb=null msg=53
05-19 15:43:10.899 1960-3859/? D/EGL_emulation: eglMakeCurrent: 0xa0d2d900: ver 3 0 (tinfo 0x9e7e5580)
05-19 15:43:10.904 1436-1436/? D/SurfaceFlinger: duplicate layer name: changing Splash Screen com.example.galzaid.movies to Splash Screen com.example.galzaid.movies#1
05-19 15:43:10.908 4009-4009/? E/ActivityThread: Service com.google.android.youtube.api.service.YouTubeService has leaked IntentReceiver vsl@33574e2 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 vsl@33574e2 that was originally registered here. Are you missing a call to unregisterReceiver()?
        at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:1333)
        at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:1114)
        at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1405)
        at android.app.ContextImpl.registerReceiver(ContextImpl.java:1378)
        at android.app.ContextImpl.registerReceiver(ContextImpl.java:1366)
        at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:603)
        at vsj.<init>(SourceFile:21)
        at vsq.get(SourceFile:9)
        at wzg.get(SourceFile:31)
        at adzu.get(SourceFile:10)
        at hog.a(SourceFile:26)
        at hpb.a(SourceFile:881)
        at hnz.<init>(SourceFile:13)
        at com.google.android.apps.youtube.embeddedplayer.service.service.jar.ApiPlayerService.<init>(SourceFile:60)
        at com.google.android.apps.youtube.embeddedplayer.service.service.jar.ApiPlayerFactoryService$1.run(SourceFile:10)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
05-19 15:43:10.869 4009-4009/?E/ActivityThread:Service com.google.android.youtube.api.Service.youtube服务已泄漏IntentReceivervsi@26900cf原来是在这里注册的。是否缺少对unregisterReceiver()的调用?
android.app.IntentReceiver泄漏:Service com.google.android.youtube.api.Service.youtube服务泄漏了IntentReceivervsi@26900cf原来是在这里注册的。是否缺少对unregisterReceiver()的调用?
在android.app.LoadedApk$ReceiverDispatcher上。(LoadedApk.java:1333)
位于android.app.LoadedApk.getReceiveDispatcher(LoadedApk.java:1114)
位于android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1405)
在android.app.ContextImpl.registerReceiver(ContextImpl.java:1378)
在android.app.ContextImpl.registerReceiver(ContextImpl.java:1366)
位于android.content.ContextWrapper.registerReceiver(ContextWrapper.java:603)
位于wyy。(源文件:53)
在wzg.get(源文件:32)
在adzu.get(源文件:10)
at hog.a(源文件:26)
在hpb.a(源文件:881)
在hnz。(源文件:13)
位于com.google.android.apps.youtube.embeddedplayer.service.service.jar.ApiPlayerService。(源文件:60)
位于com.google.android.apps.youtube.embeddedplayer.service.service.jar.ApiPlayerFactoryService$1.run(源文件:10)
位于android.os.Handler.handleCallback(Handler.java:789)
位于android.os.Handler.dispatchMessage(Handler.java:98)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6541)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.Zygote$MethodAndArgsCaller.run上(Zygote.java:240)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
05-19 15:43:10.889 1960-1988/? W/Looper:android.ui上的调度耗时500毫秒,h=Handler(com.android.server.am.ActivityManagerService$UiHandler){53d8b6e}cb=null msg=53
05-19 15:43:10.899 1960-3859/? D/EGL_仿真:eglMakeCurrent:0xa0d2d900:ver 3 0(tinfo 0x9e7e5580)
05-19 15:43:10.904 1436-1436/? D/SurfaceFlinger:重复层名称:将闪屏com.example.galzaid.movies更改为闪屏com.example.galzaid.movies#1
05-19 15:43:10.908 4009-4009/? E/ActivityThread:Service com.google.android.youtube.api.Service.youtube服务已泄漏IntentReceivervsl@33574e2原来是在这里注册的。是否缺少对unregisterReceiver()的调用?
android.app.IntentReceiver泄漏:Service com.google.android.youtube.api.Service.youtube服务泄漏了IntentReceivervsl@33574e2原来是在这里注册的。是否缺少对unregisterReceiver()的调用?
在android.app.LoadedApk$ReceiverDispatcher上。(LoadedApk.java:1333)
位于android.app.LoadedApk.getReceiveDispatcher(LoadedApk.java:1114)
位于android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1405)
在android.app.ContextImpl.registerReceiver(ContextImpl.java:1378)
在android.app.ContextImpl.registerReceiver(ContextImpl.java:1366)
位于android.content.ContextWrapper.registerReceiver(ContextWrapper.java:603)
在vsj(源文件:21)
在vsq.get(源文件:9)
在wzg.get(源文件:31)
在adzu.get(源文件:10)
at hog.a(源文件:26)
在hpb.a(源文件:881)
在hnz。(源文件:13)
位于com.google.android.apps.youtube.embeddedplayer.service.service.jar.ApiPlayerService。(源文件:60)
位于com.google.android.apps.youtube.embeddedplayer.service.service.jar.ApiPlayerFactoryService$1.run(源文件:10)
位于android.os.Handler.handleCallback(Handler.java:789)
位于android.os.Handler.dispatchMessage(Handler.java:98)
位于android.os.Looper.loop(Looper.java:164)
位于android.app.ActivityThread.main(ActivityThread.java:6541)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.Zygote$MethodAndArgsCaller.run上(Zygote.java:240)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
我听说我可能需要添加未注册接收器(广播接收器),
尽管我还没有找到一种方法。Youtube api文档似乎涵盖了解决方案:

每当调用其onDestroyView()方法时,与此片段关联的YouTubePlayer将被释放。因此,您必须重新调用initialize(String,YouTubePlayer.OnInitializedListener)无论何时重新创建与此片段关联的活动,即使通过设置setRetainInstance(布尔值)在活动重新创建过程中保留片段实例。”

添加此行有助于:

        frag.setRetainInstance(true);
frag是我用于api的youtube片段