понял что для того что бы иметь доступ к компоненту отовсюду его нужно инициализировать в onCreate в Application? В случае же если мне нужен какой то компонент исключительно в рамках активити/фрагмента я могу делать это в нём? Не совсем понял как мне передавать внешние данные в модуль, допустим я хочу создать экземпляр Room один на всё приложение, для этого мне нужно создать его как синглтон с контекстом приложения. И вопрос, собственно откуда получить контекст приложения? Если всё что передаётся в провайд функцию должно быть так же возможно получить из провайд функции.
Даггер я вобще не понял нах оно мне (ну разве что начальство скажет) но таки да - если нечто инициализировать в onCreate в Application и в нем же хранить ссылку на него (репозиторий? Копия Application context?) то к нему будет доступ откуда угодно. И даггер тогда зачем вообще?
Модуль создай, который провайдит контекст. А контекст получай из Application класса через application.applicationContext
Вот из аппликейшн класса и запросить. Вернуть его this. Он (его экземпляр) всегда по определению существует и единственен. Пишешь метод типа App.getContextAnywhere() и будет тебе контекст где угодно без даггеров
Не совсем понимаю откуда его здесь взять?
Google: how to provide context dagger2 android
Ещё вот вопрос, в одном уроке в компоненте реализуются методы inject которые принимают разные фрагменты/активити, а в примере на сайте даггера в компоненте реализуются методы от которых можно получить инстансы классов. Это зависит от того инжектим мы конструктор или поле класса?
Не совсем понял "методы от которых можно получить инстансы классов". Можно пример?
фабричные методы, видимо
Билд инстанс анотации над билдером в компоненте?
а вот тут уже ЯННП :)
Ну так первое то вообще отдельный компонент. Разные компоненты нужны как правило для разных скоупов.
А в чём их разница? Из первого просто можно получить инстансы классов, а второй сам заинжектит их в поля классов которые в него передам?
Обсуждают сегодня