я прочитал, наверное, ВСЕ статьи на хабре про даггер, а некоторые раз по 10. Общее понимание у меня, конечно, появилось, и я его использую, собственно. Но более-менее целостного и полного понимания нету. Я же говорю, как магия)
ребят кто-нибудь понимает как scope работают под капотом? что-то инфы мало в интернете. Как именно даггер оперирует объектами с разным скоуп? Когда он их уадялет и удаляет ли вообще?
ребят кто-нибудь понимает как scope работают под капотом? что-то инфы мало в интернете. Как именно даггер оперирует объектами с разным скоуп? Когда он их уадялет и удаляет ли вообще?
Всё супер просто. Если зависимость scoped (есть scope-аннотация) - она создаётся один раз в рамках одного инстанса компонента и в последующие разы провайдится одна и та же. Если зависимость unscoped (нету scope-аннотации) - она создаётся каждый раз по требованию. Ничего нигде не удаляется. Умирает компонент - умирают и закешированные scoped зависимости (если на них нет ещё где-то ссылок)
Всё супер просто. Если зависимость scoped (есть scope-аннотация) - она создаётся один раз в рамках одного инстанса компонента и в последующие разы провайдится одна и та же. Если зависимость unscoped (нету scope-аннотации) - она создаётся каждый раз по требованию. Ничего нигде не удаляется. Умирает компонент - умирают и закешированные scoped зависимости (если на них нет ещё где-то ссылок)
так чаще всего компоненты существует в течении времени жизни приложения, и получается что все кастомные аннотации не имеют смысла, так как инстансы будут удалены только после того как приложение умрет?
так чаще всего компоненты существует в течении времени жизни приложения, и получается что все кастомные аннотации не имеют смысла, так как инстансы будут удалены только после того как приложение умрет?
Ну, про "чаще всего" это вы конечно громко сказали)
я в общем так и думал, просто все никак не мог понять, почему вижу раные проекты кучу скоупов разных и один компонент, в этом же нет логики, верно?
Если не хочется самому делать инструменты для управления ЖЦ - можно попробовать потыкать Toothpick. Там более удобно это делается. Но там меньше безопасности из-за отсутствия compile-time проверок графа на корректность.