- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用 YoutubeServie API 在我的 Android 应用程序中播放 youtube 视频。然而,当我退出 Activity 时,我发现显示了以下崩溃日志,即使我的应用程序仍然有效。
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)
所有代码都不是来 self 的应用程序,但都在库中。我没有在我的代码中注册任何接收器,因此无法在我的 fragment 中取消注册与 youtubeservice 一起使用的任何内容。
我认为这个问题类似于 https://groups.google.com/forum/#!topic/android-developers/6gzpwkaRgoE但没有给出答案。知道如何摆脱 youtube.api.service 的这种内部崩溃吗?
最佳答案
即使您没有手动注册任何接收器, Activity 也可以注册它以在当前 Activity 中以某种方式使用它。我认为您应该需要在 onPause() 上调用 unregisterReceiver() 方法。
请注意,不保证会调用 onDestroy() 和 onStop()。如果调用 onPause(),则 Activity 不再处于前台。
OnStop():
Called when you are no longer visible to the user. You will next receive either onRestart(), onDestroy(), or nothing, depending on later user activity. Note that this method may never be called, in low memory situations where the system does not have enough memory to keep your activity's process running after its onPause() method is called.
For more information, here's the link: http://developer.android.com/reference/android/app/Activity.html#onStop%28%29
幸运的是,我还找到了一些stackoverflow的条目,你可以引用一下:
希望对您有所帮助。
关于android - 错误 : YouTubeService has leaked IntentReceiver . .. 您是否错过了对 unregisterReceiver() 的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35678972/
我对 unregisterReceiver() 感到困惑。如果我们之前在代码中注册了接收者,是否必须取消注册接收者。我已经看到有时我们不注销它并且仍然一切正常,但有时我们需要注销它以消除运行时异常。
如果我不注销接收器会怎样?它会减慢我的应用程序速度或导致应用程序崩溃或引发某种异常吗?我需要这个接收器一直注册,即使应用程序已关闭: this.registerReceiver(broadcastRe
我的 list 文件中有类似的内容 - 我需要一个接收器用于连接电源的情况,另一个接收器用于未插入电源的情况。
我在注销 BroadcastReceiver 时遇到了一些问题。我首先注册它,但是当我想使用 unregisterReceiver(); 命令注销它时,出现了很多错误。该错误表明我没有注册我的 Bro
我收到以下错误: “您是否错过了取消注册接收器的调用” android.app.IntentReceiverLeaked: Activity com.apps.activities.MainActiv
我在停止 PhoneStateListener 时遇到问题。我尝试使用 unregisterReceiver() 但它没有用。我确实阅读了该网站,发现我必须使用 LISTEN.NON,但我做不到。 我
我收到以下错误: 12-02 13:35:55.990 10977-10977/com.example.btpdemo76 E/ActivityThread: Activity com.zkc.pin
我正在使用前台 Android Service 通过 REST API 通过 Retrofit 请求资源,作为每 60 秒的计时器。此类服务也在与应用程序不同的进程中运行,这是必要的,这样 Andro
我不明白为什么我在点击后退按钮时会收到此异常。我在 onCreate 方法中注册了 IntentReceiver,它应该在 onPause 方法中取消注册。我在 onPause 方法内部调用 Log.
我正在尝试以下短信示例: http://mobiforge.com/developing/story/sms-messaging-android但如果我尝试发送消息,我会收到以下异常。 Excepti
我在 OnDestroy 方法内的 unregisterReceiver(AlarmBroadCast) 行得到 java.lang.IllegalArgumentException 仅在 andro
我知道不执行 unregisterReveiver(BroadcastReceiver) 会在 Activity 销毁时导致内存泄漏。但我不明白为什么会导致内存泄漏。 我正在使用 LocalBroad
我有一个应用程序,用户可以在“设置”中注册和注销接收器以启用和禁用应用程序服务。 我使用了一个切换按钮来让用户控制应用程序服务。我在其开启状态下注册了一个接收器并在其关闭 状态。 当我通过使切换按钮处
01-16 16:52:42.211: E/ActivityThread(2529): Activity com.Civilcourage.CivilcurageSplash has leaked I
我使用 YoutubeServie API 在我的 Android 应用程序中播放 youtube 视频。然而,当我退出 Activity 时,我发现显示了以下崩溃日志,即使我的应用程序仍然有效。 0
我正在尝试在 MoPub 上执行横幅和全屏广告,但出现了这两个错误。 谢谢。 错误 1:广告单元(此处为单元 ID)禁用刷新 错误 2:Activityname 泄露了最初在此处注册的 IntentR
我使用的是 Context.registerReceiver()、Context.sendBroadcast(Intent) 和 Context.unregisterReceiver() 但是当我看到
我是一名优秀的程序员,十分优秀!