Size: a a a

Android Developers

2019 December 20

QH

Quantum Harmonizer in Android Developers
Alexey Pushkarev
ну да я про это и имел в виду. То есть в данном случае клик листенер течет, если я его не снимаю в ondestroyview ? homeviewmodel проперти фрагмента.
погоди, так фрагмент же живёт дольше. Вот если бы фрагмент удерживал лисенеры, было бы плохо. Но всё наоборот
источник

AP

Alexey Pushkarev in Android Developers
Александр
Кто - то снимает листенеры?
ну получается во фрагментах надо снимать да. В активи не нужно, потому что обычно активити не живет дольше вьюхи.
источник

AG

Andrew Growing in Android Developers
Alexey Pushkarev
ну блин, не надо мне кидать описание мемори лика, я знаю что это.
В этой статье есть одно важное замечание - утечка памяти в Java - это ситуация, когда некоторые объекты больше не используются приложением, но GC не может распознать их как неиспользуемые
источник

AG

Andrew Growing in Android Developers
Так вот, в ситуации с листенарами всё отлично распознаётся.
источник

AG

Andrew Growing in Android Developers
когда фрагмент того
источник

M

Max in Android Developers
В Parcel можно записать объект Object?
источник

AG

Andrew Growing in Android Developers
Max
В Parcel можно записать объект Object?
parcelable это интерфейс
источник

M

Max in Android Developers
Ой, Parcel
источник

AP

Alexey Pushkarev in Android Developers
Quantum Harmonizer
погоди, так фрагмент же живёт дольше. Вот если бы фрагмент удерживал лисенеры, было бы плохо. Но всё наоборот
не смотри... мы засетали клик листенер в text_search.  Этот листенер по сути иннер класс, который имеет ссылку на фрагмент, потому что обращается к полю класса фрагмента. Когда мы уничтожаем вьюхи в ondestroyview считай text_search типо уничтожается, но этот кликлистенер не даст gc собрать text_search. Фрагмент то будет продолжать жить в бэк стеке.
источник

AG

Andrew Growing in Android Developers
Alexey Pushkarev
не смотри... мы засетали клик листенер в text_search.  Этот листенер по сути иннер класс, который имеет ссылку на фрагмент, потому что обращается к полю класса фрагмента. Когда мы уничтожаем вьюхи в ondestroyview считай text_search типо уничтожается, но этот кликлистенер не даст gc собрать text_search. Фрагмент то будет продолжать жить в бэк стеке.
ну ничего, вместе с ним будут жить несколько байт листенера. Потом все дружно пойдут под нож.
источник

AG

Andrew Growing in Android Developers
Max
Ой, Parcel
Что ты хочешь сделать? Какая бизнес-задача?
источник

AP

Alexey Pushkarev in Android Developers
Andrew Growing
ну ничего, вместе с ним будут жить несколько байт листенера. Потом все дружно пойдут под нож.
а потом фрагмент вытаскивается из бэк стека и у него опять создается вьюхи с новым листенером. Старая вьюха остается висеть не?
источник

QH

Quantum Harmonizer in Android Developers
Alexey Pushkarev
а потом фрагмент вытаскивается из бэк стека и у него опять создается вьюхи с новым листенером. Старая вьюха остается висеть не?
как насчёт не?)
источник

AG

Andrew Growing in Android Developers
Alexey Pushkarev
а потом фрагмент вытаскивается из бэк стека и у него опять создается вьюхи с новым листенером. Старая вьюха остается висеть не?
старая теперь станет помеченной как не имеющей ссылки
источник

AP

Alexey Pushkarev in Android Developers
Quantum Harmonizer
как насчёт не?)
если не, то почему?
источник

AG

Andrew Growing in Android Developers
Alexey Pushkarev
если не, то почему?
потому что Root-ссылка больше не существует
источник

M

Max in Android Developers
Andrew Growing
Что ты хочешь сделать? Какая бизнес-задача?
Я хочу лист со своими объектами перекинуть с Активити во фрагмент через newInstance, класс, объекты которого я хочу передать имплементирует Parcelable, но члены его класса имеют не примитивный тип, поэтому я не знаю как через Bundle во фрагменте передать этот list в OnCreate фрагмента
источник

AP

Alexey Pushkarev in Android Developers
text_search кстати из котлин синтетиков
источник

AG

Andrew Growing in Android Developers
Max
Я хочу лист со своими объектами перекинуть с Активити во фрагмент через newInstance, класс, объекты которого я хочу передать имплементирует Parcelable, но члены его класса имеют не примитивный тип, поэтому я не знаю как через Bundle во фрагменте передать этот list в OnCreate фрагмента
Нельзя так делать.
источник

AP

Alexey Pushkarev in Android Developers
Andrew Growing
потому что Root-ссылка больше не существует
так вроде же получается создается новая вьюха и создается к ней новый листенер со ссылкой на этот фрагмент.
источник