169 похожих чатов

Привет. Разбираюсь с даггером, появилась пара вопросов. Правильно ли я

понял что для того что бы иметь доступ к компоненту отовсюду его нужно инициализировать в onCreate в Application? В случае же если мне нужен какой то компонент исключительно в рамках активити/фрагмента я могу делать это в нём? Не совсем понял как мне передавать внешние данные в модуль, допустим я хочу создать экземпляр Room один на всё приложение, для этого мне нужно создать его как синглтон с контекстом приложения. И вопрос, собственно откуда получить контекст приложения? Если всё что передаётся в провайд функцию должно быть так же возможно получить из провайд функции.

15 ответов

14 просмотров

Даггер я вобще не понял нах оно мне (ну разве что начальство скажет) но таки да - если нечто инициализировать в onCreate в Application и в нем же хранить ссылку на него (репозиторий? Копия Application context?) то к нему будет доступ откуда угодно. И даггер тогда зачем вообще?

Модуль создай, который провайдит контекст. А контекст получай из Application класса через application.applicationContext

Вот из аппликейшн класса и запросить. Вернуть его this. Он (его экземпляр) всегда по определению существует и единственен. Пишешь метод типа App.getContextAnywhere() и будет тебе контекст где угодно без даггеров

Dzmitry- Автор вопроса

Не совсем понимаю откуда его здесь взять?

Google: how to provide context dagger2 android

Dzmitry- Автор вопроса

Ещё вот вопрос, в одном уроке в компоненте реализуются методы inject которые принимают разные фрагменты/активити, а в примере на сайте даггера в компоненте реализуются методы от которых можно получить инстансы классов. Это зависит от того инжектим мы конструктор или поле класса?

Не совсем понял "методы от которых можно получить инстансы классов". Можно пример?

фабричные методы, видимо

Билд инстанс анотации над билдером в компоненте?

а вот тут уже ЯННП :)

Dzmitry- Автор вопроса
Dzmitry- Автор вопроса

Первый скрин с сайта, там метод возвращает класс, второй из видео, там инжекты без ретурна

Ну так первое то вообще отдельный компонент. Разные компоненты нужны как правило для разных скоупов.

Dzmitry- Автор вопроса

А в чём их разница? Из первого просто можно получить инстансы классов, а второй сам заинжектит их в поля классов которые в него передам?

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта