Как внедрить базу данных Room во все мои ViewModels как синглтон с помощью Dagger2?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как внедрить базу данных Room во все мои ViewModels как синглтон с помощью Dagger2?

Сообщение Anonymous »


Это мой код:

@Module класс AppModule (частное приложение val: App) { @Обеспечивает весело обеспечитьApplication(): App { заявление на возврат } @Обеспечивает @Синглтон весело обеспечитьAppDatabase (приложение: Приложение): AppDatabase { вернуть AppDatabase.getInstance(приложение) } } @Синглтон @Component(modules = [AppModule::class]) интерфейс AppComponent { забавная инъекция (viewModel: MainViewModel) @Component.Builder Разработчик интерфейса { @BindsInstance забавное приложение (приложение: App): Builder забавная сборка(): AppComponent } } Класс приложения:

lateinit var appComponent: AppComponent переопределить удовольствие onCreate() { супер.onCreate() log("Проверка стабильности: App.onCreate() - запуск") AppCompatDelegate.setCompatVectorFromResourcesEnabled (истина) connMgr = getSystemService(Context.CONNECTIVITY_SERVICE) как ConnectivityManager проверитьСетьСоединенный() initNetworkConnectivityCheck() //инициализируем базу данных при запуске приложения appComponent = DaggerAppComponent.builder() .appModule(AppModule(это)) .строить() log("Проверка стабильности: App.onCreate() - конец") } MainViewModel (расширенный другими моделями представления)

открыть класс MainViewModel @Inject конструктор(private val appComponent: AppComponent): ViewModel() {...} ??? что здесь делать? Мне все еще нужно передать appComponent в ViewModelFactory внутри моего Fragment.

класс RegistrationViewModel(): MainViewModel() { ... } Теперь как мне получить доступ к appComponent во всех расширенных моделях представления как синглтон?

Я хотел использовать здесь Dagger, чтобы попробовать внедрение зависимостей, но я не понимаю, какой это лучший подход, если я могу просто поместить весь экземпляр класса Application в конструктор любой ViewModel при инициализации (например, во фрагменте).
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»