Dagger2 Android мало отличается от стандартного Dagger2, когда речь идет о настраиваемой области видимости и субкомпонентах Dagger2 android дает вам мало возможностей не беспокоиться о подкомпоненте. То, о чем вы говорите, на самом деле является субкомпонентом. И ваши вопросы:
1.Application class onCreate создает компонент, а этот компонент внедряет все действия и фрагменты. Это происходит в начале приложения или при создании указанного действия или фрагмента c?
Ответ : Да, это зависит от того, что еще у вас в этом компоненте, сколько действий и сколько фрагментов и какое действие / фрагмент вы запускаете / фрагмент и какое действие непосредственно ассоциируется с вашим компонентом уровня приложения и да, приложение внедряет / инициализирует только один раз, пока приложение не уничтожено.
2. Что мне не нравится в этом подходе, так это то, что когда у меня будет 100 действий и каждое действие будет иметь 2 фрагмента, тогда в ActivityModule мне придется написать 100 раз:
@ ContributesAndroidInjector абстрактное веселье contribMyActivity (): MyActivity И опять то же самое 200 раз за фрагменты. Это много шаблонного кода. Я прав или я что-то здесь упускаю? Есть ли какой-то другой лучший подход для этого?
Ответ : Лучший способ сделать это - предоставить подкомпонент для каждого действия, и вам не нужно беспокоиться о том, что будет делать 199-е действие, поскольку ваше 199-е действие ассоциировать с этим 199-м компонентом и 199-м компонентом, подключенным только к appComponent, а не к другому subComponent, и этот один подкомпонент связан с вашим этим одним действием, и это одно действие предназначено для этого фрагмента или двух фрагментов, и да, не забудьте соответствующим образом охватить каждый компонент и Вы не беспокоитесь о appComponent и subComponent, это как наследство Ребенок может получить доступ ко всему, что есть у родителя.
3.Когда компонент приложения внедряет все действия, тогда нет необходимости в других компонентах?
Ответ : НЕТ !! У вас есть 200 мероприятий? Вы можете создать 200 компонентов для каждого действия, и каждый компонент будет подключен к компоненту уровня приложения для доступа к графику зависимости уровня приложения / объекту. Теперь я задам простой вопрос. Кто создает 200 мероприятий?
Android команда предложила использовать dagger2 И они признали, что это крутая кривая обучения, но они все еще хотят, чтобы разработчики использовали dagger2, и они больше фокусируются на стандартном dagger2, чем на android dagger2. Это недостаток кинжала android, который он заставляет использовать, чтобы связать вашу активность с androidContributeInjector (), он не дает этой руки, чтобы поиграть с компонентом больше, но стандартный dagger2 делает это. Лично я использовал dagger2- Android но я переключился на стандарт-Dagger2 и теперь он обеспечивает полный контроль над компонентом или субкомпонентами.
Вот что вам нужно На самом деле https://developer.android.com/training/dependency-injection/dagger-android