Dagger 2 & ViewModel настраиваемая область - PullRequest
0 голосов
/ 30 ноября 2018

В настоящее время в моем проекте Android MVVM у меня есть три области Dagger:

  • Singleton
  • Область действия
  • Область действия фрагмента

Они очень полезны с точки зрения управления жизненным циклом объекта.Однако есть один сценарий, который я не могу решить:

Технически возможно ли реализовать область видимости модели, реализованную в Dagger 2? (конечно, посмотреть модель из компонентов арки).

Давайте возьмем этот сценарий для примера: я хотел бы иметь возможность внедрить один и тот же экземпляр некоторого класса в модель представления и фрагмент (который является хостом для этой модели представления).Этот экземпляр должен жить так же долго, как и модель представления, поэтому, если я поверну экран и фрагмент будет воссоздан, в него будет вставлен тот же экземпляр.

Сейчас все, о чем я могу думать, это иметь этот экземпляр в Singleton.область видимости, но это не очень хорошо, поскольку мне нужно выполнить некоторое ручное управление состоянием, чтобы очистить состояние этого экземпляра после разрушения модели представления.

1 Ответ

0 голосов
/ 04 декабря 2018

Вы можете создать класс аннотаций для таких моделей представления, как этот

@Documented
@MapKey
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ViewModelKey {

    Class<? extends ViewModel> value();
}

Я написал в этом хранилище, как вводить модели представления в действия https://github.com/ibrahimsn98/android-mvvm-dagger-2-rxjava-example

...