Как использовать объект Okhttpclient между активами с помощью кинжала 2 - PullRequest
0 голосов
/ 28 июня 2018

Я создал интерфейс EmailComponent, который имеет 2 модуля EmailModule и Networkmodule, я пытаюсь разделить объект Email и объект Okhttpclient между активами. В ActivityA я сделал:

    EmailComponent component = DaggerEmailComponent.builder()
    .emailModule(new EmailModule())
    .netWorkModule(new NetWorkModule()).build();
    component.Email().sendEmail();

Это работает нормально. У меня вопрос, как я могу внедрить их в ActivityB, не вызывая снова код сборки DaggerEmailComponent?

Если я пытаюсь использовать инъекцию поля в ActivityB, как показано ниже, этот код вылетает.

     @Inject Email email
     email.sendMail(); // App crash.

Возможно ли то, что я пытаюсь достичь? Если да, что я делаю не так?

1 Ответ

0 голосов
/ 02 июля 2018

Чтобы не делать EamilComponent снова и снова, вы можете выполнить Базовое действие и переместить туда код создания компонента. Или вы можете создать подкласс Application и создать статический компонент, который затем можно будет использовать в любом месте приложения. Вы должны получать NPE, так как поле, возможно, не было инициализировано.

Для использования статического компонента из подкласса Application создайте метод в своем компоненте кинжала с базовым действием в качестве параметра, а затем вызовите этот метод с использованием статического EamilComponent в подклассе приложения сразу после onCreate действия. Вы даже можете вызвать метод в компоненте до onCreate.

...