В Activity произошла утечка ServiceConnection com.google.android.youtube.player, который изначально был привязан сюда

Я использую Activity с макетом android.support.v4.view.ViewPager, который я использовал для управления навигацией по вкладкам. У меня разные фрагменты для разных вкладок. На третьей вкладке я загружаю несколько эскизов YouTube из своей учетной записи YouTube.

Когда я загружаю приложение (когда я остаюсь на первой вкладке) и нажимаю «Назад» для выхода из приложения, оно существует без каких-либо проблем. Но когда я перехожу на вторую вкладку и пытаюсь нажать кнопку «Назад», приложение существует с ошибкой, как показано ниже.

E/ActivityThread(7187): Activity package.name.ActivityName has leaked ServiceConnection com.google.android.youtube.player.internal.r$e@41e5d180 that was originally bound here
E/ActivityThread(7187): android.app.ServiceConnectionLeaked: Activity package.name.ActivityName has leaked ServiceConnection com.google.android.youtube.player.internal.r$e@41e5d180 that was originally bound here

Я добавил в свой проект YouTube Data API v3.

Как я могу решить эту проблему? Почему ошибка появляется при выходе из второй вкладки, но не при выходе из первой вкладки?

Это не повторяющийся вопрос это.


person AnujAroshA    schedule 06.11.2013    source источник
comment
Если я правильно угадаю, вы загружаете api, когда появляется вторая страница, а также затем запускаете API YouTube. Вместо того, чтобы указывать свою активность в качестве контекста, попробуйте передать контекст приложения в api   -  person TacB0sS    schedule 06.11.2013
comment
@ TacB0sS круто ... Ошибка исчезла. Изложите это как ответ, и я приму это.   -  person AnujAroshA    schedule 06.11.2013


Ответы (2)


Если я правильно угадаю, вы загружаете api, когда появляется вторая страница, а также затем запускаете API YouTube. Вместо того, чтобы указывать свою активность в качестве контекста, попробуйте передать контекст приложения в api.

person TacB0sS    schedule 06.11.2013
comment
Я думаю, что многие люди не согласятся с моим следующим утверждением, но я считаю, что нет причин использовать вашу активность в качестве контекста для чего-либо, кроме управления стеком действий. - person TacB0sS; 06.11.2013
comment
По любой другой причине, по которой я думаю, разработчик должен предоставить контекст приложения и иметь управление контекстом SMART, поскольку в большинстве случаев использование контекста в течение всего срока службы выходит за рамки любого конкретного объекта в приложении, за исключением приложения один! - person TacB0sS; 06.11.2013
comment
Не могли бы вы объяснить, почему именно подход OP ошибочен и уместно указать контекст приложения? Я думал, что контекст приложения должен использоваться только в том случае, если вы хотите сохранить ссылку как можно дольше? - person Sojurn; 14.02.2014
comment
Конечно, если вы можете придумать какую-либо функцию (утилита / сторонняя библиотека / api), которую вы хотели бы использовать, которая живет и умирает на одном и том же экране (Activity), тогда хорошо, вы можете использовать Activity в качестве контекста. Я со своей стороны, каждый раз, когда я пробовал это, я вскоре понял, что мое основное предположение было неверным ... и я хочу использовать эту функцию и в другом месте, таким образом, я управлял временем жизни этой функции. внутри приложения перекрестные действия с помощью ApplicationContext. - Надеюсь, что это ясно ... - person TacB0sS; 16.02.2014
comment
Трудно найти ответ, но он имеет смысл и решил мою проблему! Надо было набрать больше очков ... - person keybee; 11.05.2015
comment
Как вам удалось использовать контекст приложения? Требуется, чтобы контекст реализовал OnInitializedListener YouTube. - person Jameson; 20.08.2015
comment
Могу ли я получить рабочий пример внутри фрагмента ?. Когда я использую в Viewpager / Fragment, возникают утечки ошибок. - person Ramesh_D; 16.06.2016

Я использовал фрагмент в TabLayout, чтобы запустить намерение видео Youtube. Приложение работало нормально, но Logcat показала эту ошибку. Я обнаружил, что я не выпускал загрузчики эскизов после того, как они были загружены или нет (в зависимости от действительного идентификатора видео). Это решило мою проблему.

person Arjupta    schedule 07.06.2020