Что делает Dagger вместо отражения - PullRequest
0 голосов
/ 10 июля 2019

Из документов: https://developer.android.com/topic/performance/memory.html#DependencyInjection

enter image description here


Там написано, что он не использует аннотации. Но я использовал аннотации, такие как @Inject, @Component, @module ..... Как действует утверждение


1 Ответ

1 голос
/ 11 июля 2019

Dagger2 генерирует много шаблонов и кода для вас, обычно эти сгенерированные объекты имеют префикс со словом Dagger, когда вы пытаетесь взаимодействовать с ними.Я не знаю, ответит ли это на ваш вопрос или нет, но при использовании Dagger вам обычно необходимо сначала создать сборку приложения для этих классов, прежде чем вы начнете их использовать, а выполнение очистки и сборки будетзаново сгенерируйте эти файлы для вас (очистите, удалите, создайте сборку).

в качестве примера:

    DaggerAppComponent.builder()
        .application(this)
        .build()
        .inject(this)

этот DaggerAppComponent будет доступен только после выполнения сборки, поскольку она генерируетсячерез структуру кинжала

Аннотации, предоставляемые кинжалом, такие как @Inject, просто говорят кинжалу, КАК генерировать определенные файлы или куда (для этого экземпляра) вводить значения, эти аннотации используются, чтобы сообщить кинжалу, как это сделать.вещи вместо того, чтобы быть отражением

...