Size: a a a

Android Developers

2021 September 09

АГ

Алексей Гладков... in Android Developers
Зачем такие сложности, берешь object и прям все в нем все в нем :D
источник

ℕo ℕame in Android Developers
object DI { var context: Context? = null }🌚
источник

PE

Pavel Erokhin in Android Developers
Gold цитаты
источник

NK

Nikita Kladov in Android Developers
В класс А инжектится Б. В класс Б инжектится Set из классов С.
Без аннотации @PerActivity на А все работает нормально. Как только добавляю ее, то сразу ловлю
[Dagger/MissingBinding] java.util.Set<...> cannot be provided without an @Provides-annotated method
Может кто подсказать что не так?
источник

A

Alex Android in Android Developers
А где что можно почитать? Я примерно представляю, но не в деталях
источник

PE

Pavel Erokhin in Android Developers
Почитать в исходниках DI либы которой вдохновлен

А вообще, тебе надо где-то хранить класс, или указатель на какой-то класс, и как-то достать по какому-то ключу, тип, идендификатор
источник

PE

Pavel Erokhin in Android Developers
Вот и реши как))
источник

PE

Pavel Erokhin in Android Developers
Конечно если сделать качественно и все кейсы предусмотреть, то это не на неделю работы
источник

A

Alex Android in Android Developers
А как, например, обработать @Inject? Только препроцессором?
источник

ℕo ℕame in Android Developers
можно в рантайме
источник

PE

Pavel Erokhin in Android Developers
Ну вообще я бы отказался от аннотаций для инжекта, но если тебе хочется, то да

kapt например, или в рантайме как No Name написал
источник

PE

Pavel Erokhin in Android Developers
Или с помощью гугловским процессором исходного кода
источник

СП

Сергей П. in Android Developers
В Application классе

companion object {
lateinit appContext: Context
}

Туда же рядом инициализированные репозиторий, и все остальное что надо по всему приложению инжектить


Это не DI  а сервис локатор,  но работает
источник

PE

Pavel Erokhin in Android Developers
kps вроде или ksp
источник

PE

Pavel Erokhin in Android Developers
только lateinit убрать и красиво будет
источник

A

Alex Android in Android Developers
Тоже думал про App.companion
Но тогда же в тестах его не переопределишь
источник

СП

Сергей П. in Android Developers
Ну он только в onCreate появляется, нуллабельным сделать чтоли?
источник

СП

Сергей П. in Android Developers
Хотя есть извращенный способ его до onCreate добыть
источник

СП

Сергей П. in Android Developers
Вопрос где брать в тестах контекст - это к библиотеке для тестирования, как то мокать тот что там есть
источник

A

Alex Android in Android Developers
Ну контекст можно оставить только для платформенных вещей, которые будут тягаться уже непосредственно моими сервисами
источник