Как управлять созданием и хранением компонента dagger2 - PullRequest
1 голос
/ 14 марта 2019

Долгое время я боролся с компонентами кинжала. Сначала я создал Injectors класс для каждого пользовательского компонента , который содержал статическое поле либо с WeakReference<Component>, либо просто Component, так что у меня всегда был доступ к этому компоненту через статический метод.

Но я думаю, что это довольно плохой подход, потому что WeakReference можно очистить, чтобы вы не получили тот же Component, а также вы можете просто забыть очистить Component в статическом поле.

Я разработал другой подход, когда у меня есть ComponentsHolder интерфейс, который реализован в App и содержит несколько методов для добавления, удаления и проверки наличия компонента в HashMap<String, Component> внутри того же класса App.

Таким образом, этот подход в сочетании с расширениями kotlin для Context дал мне прекрасную возможность вводить вещи в любое место, где у меня есть Context, например:

context.injector(Component::class) {
   inject(this@ObjectWhereToInject)
}

Так что я не против, может, я что-то не так делаю? Или есть лучший подход для хранения и извлечения компонентов кинжала?

...