Size: a a a

StartAndroid Ru Chat

2021 April 01

S

SevenXP in StartAndroid Ru Chat
просто что более сложная логика выполняет объединение логик и по сути отвечает принципу единой ответственности, это вот если в кратце.
источник

Ф

Фёдор in StartAndroid Ru Chat
SevenXP
для других случаев можно использовать слабые ссылки WeekReference
Про weekReference не слышал, посмотрю
источник

S

SevenXP in StartAndroid Ru Chat
источник

S

SevenXP in StartAndroid Ru Chat
Если Dagger используется или Koin, или своя реализация или еще что, то там как правило используется ApplicationContext который и так живет все жизнь, жизни приложения. до полного его убийства. Даже в кэше сохраняется. пока не будет убит.
источник

S

SevenXP in StartAndroid Ru Chat
И по этому его часто передают в такие архитектурные компоненты, по тому что, в этом не чего страшного нет и более правильно чем вызывать Application::class (который мы указали в манифесте и сохранили в ссылку при onCreate).instance. особенно в класс которые генерятся через Dagger, Koin и тд тп.
источник

S

SevenXP in StartAndroid Ru Chat
Тем более страшен же не сам контекст а любая ссылка, которая может указывать на тяжелый объект, к примеру Fragment у него был какой то listener который был установлен как слушатель в синглтоне и отписка не произошла,
указывали как listener но на самом деле там храниться Fragment со свойствами listener.
источник

Ф

Фёдор in StartAndroid Ru Chat
SevenXP
И по этому его часто передают в такие архитектурные компоненты, по тому что, в этом не чего страшного нет и более правильно чем вызывать Application::class (который мы указали в манифесте и сохранили в ссылку при onCreate).instance. особенно в класс которые генерятся через Dagger, Koin и тд тп.
Да, это понятно
источник

S

SevenXP in StartAndroid Ru Chat
Но если используйте LiveData, Observable и другие + Двух стороний биндин, то там принцип проектировки прилаги, немного другой, что делает более безопасной для утечки памяти.
А утечка может быть разные
К примеру работали с Bitmap их надо уничтожать руками или помещать в специальный кэш окторый затрет.
источник

S

SevenXP in StartAndroid Ru Chat
Другие объекты которые юзают C/C++ К примеру, атм часто пишут в доке, вызвать обязательно Destroy  и тд тп.
источник

Ф

Фёдор in StartAndroid Ru Chat
Ну С++ вообще кошмар в плане утечек
источник

S

SevenXP in StartAndroid Ru Chat
Ну вообще там просто все удаляется руками))
источник

S

SevenXP in StartAndroid Ru Chat
Больше возможностей, больше ответственность
источник

СП

Сергей П. in StartAndroid Ru Chat
SevenXP
Но если используйте LiveData, Observable и другие + Двух стороний биндин, то там принцип проектировки прилаги, немного другой, что делает более безопасной для утечки памяти.
А утечка может быть разные
К примеру работали с Bitmap их надо уничтожать руками или помещать в специальный кэш окторый затрет.
Зачем? Если картинка не нужна сборщик ее сам прибьет.
Ну то есть тот метод где она объявлена закрылся. Или объект полем которого она является - сам уничтожен.
источник

СП

Сергей П. in StartAndroid Ru Chat
А уничтожать руками это bitmap= null?
источник

СП

Сергей П. in StartAndroid Ru Chat
Крайне редко видел такой код
источник

S

SevenXP in StartAndroid Ru Chat
bitmap.recycler
источник

G

GR13 in StartAndroid Ru Chat
Виды ссылок Java. Кому надо, забираем.
источник

G

GR13 in StartAndroid Ru Chat
источник

СП

Сергей П. in StartAndroid Ru Chat
SevenXP
bitmap.recycler
А, это. Это полезно
источник

S

SevenXP in StartAndroid Ru Chat
Сергей П.
Зачем? Если картинка не нужна сборщик ее сам прибьет.
Ну то есть тот метод где она объявлена закрылся. Или объект полем которого она является - сам уничтожен.
это я что бы избавиться от стандартных реализаций слушателей. Когда могли подписывали и забывали отписываться.
источник