2016-02-28 16 views
5

Tôi sử dụng API YoutubeServie để phát video trên youtube trong ứng dụng Android của mình. Tuy nhiên khi tôi thoát khỏi hoạt động của mình, tôi thấy nhật ký sự cố bên dưới hiển thị, ngay cả ứng dụng của tôi vẫn hoạt động.Lỗi: YouTubeService đã bị rò rỉ IntentReceiver ... Bạn có đang thiếu cuộc gọi đến unregisterReceiver() không?

02-28 15:54:02.081 20374-20374/? E/ActivityThread: Service com.google.android.youtube.api.service.YouTubeService has leaked IntentReceiver com.google.[email protected]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.[email protected]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[email protected]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[email protected]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) 

Không có mã nào từ ứng dụng của tôi, nhưng tất cả đều nằm trong thư viện. Tôi không đăng ký bất kỳ người nhận nào trong mã của mình, vì vậy không thể hủy đăng ký bất kỳ thứ gì trong đoạn của tôi hoạt động với dịch vụ youtubeservice.

Tôi nghĩ vấn đề tương tự như https://groups.google.com/forum/#!topic/android-developers/6gzpwkaRgoE nhưng không có câu trả lời nào được đưa ra. Bất kỳ ý tưởng làm thế nào để thoát khỏi sự cố nội bộ này của youtube.api.service?

+0

Xin chào Elye, Bạn đã khắc phục vấn đề này chưa. Đây là vấn đề làm tôi khó chịu. Vui lòng giúp tôi nếu có thể. –

+0

Xin chào, bạn đã cố gắng khắc phục sự cố này chưa? Cảm ơn trước ! :) – AnthoPak

+0

Xin chào, tôi đang gặp phải sự cố tương tự. Bạn đã giải quyết của bạn? – Shrikant

Trả lời

0

Ngay cả khi bạn không đăng ký thủ công bất kỳ người nhận nào, một hoạt động có thể đăng ký nó để sử dụng nó theo cách nào đó trên hoạt động hiện tại. Tôi nghĩ bạn nên gọi phương thức unregisterReceiver() trên onPause().

Xin lưu ý rằng onDestroy() và onStop() không được bảo đảm để được gọi. Nếu onPause() sẽ được gọi, thì Activity không còn ở mặt trước.

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

May mắn thay, tôi cũng tìm thấy một số mặt hàng stackoverflow mà bạn có thể tham khảo:

Tôi hy vọng điều này sẽ giúp.

+0

Cảm ơn @rod. Tuy nhiên, không có gì tôi có thể đặt làm đối số trong hàm unregisterReceiver (...) của tôi. Tôi đã thấy tất cả các liên kết ở trên và không có câu trả lời nào. Thứ hai, chỉ cần hướng dẫn một cách để có được Youtube API đi, nhưng các tai nạn bên trong vẫn xảy ra ... Về phía tôi, tôi có youtube chơi tốt. Chỉ cần đăng nhập nội bộ của các vụ tai nạn nội bộ luôn luôn xảy ra. Tôi muốn biết "những gì" để "hủy đăng ký". – Elye

+0

Xin chào @Elye. Dựa trên nhật ký bảng điều khiển của bạn, có AudioBecomingNoisyReceiver và HeadsetPlugReceiver đang được sử dụng. Tôi đã cố gắng tìm kiếm một cái gì đó về điều này và nó dẫn tôi đến [link] này (http://twigstechtips.blogspot.com/2013/06/android-detect-when-headsetheadphones.html). Có bất kỳ mã nào của bạn đề cập đến điều này không? – rod

+0

Không. Không sử dụng nó. Có lẽ đó là Youtube API SDK sử dụng nó trong nội bộ, và nó nằm ngoài tầm kiểm soát của chúng tôi :(. Nghi ngờ ở đâu đó trong 'com.google.android.libraries.youtube.player.service.PlaybackService.' Bên cạnh đó, nó không phải là mã nguồn mở ... vì vậy có thể 't đào vào nó để kiểm tra – Elye

0

Tôi đã giải quyết vấn đề này:

Trong manifest.xml Tuyên bố điều gì đó như thế này.

<activity 
    android:name=".YouTubeActivity" 
    android:configChanges="keyboardHidden|orientation|screenSize" 
    android:screenOrientation="landscape" 
    android:theme="@style/AppTheme.NoActionBar" /> 
Các vấn đề liên quan