Как получить контекст для базы данных Room и правильно ее инициализировать в Android Compose?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как получить контекст для базы данных Room и правильно ее инициализировать в Android Compose?

Сообщение Anonymous »

Я использую базу данных Room в приложении Android, для ее создания необходим экземпляр класса context. Я хочу получить доступ к базе данных в ViewModel, но контекст можно получить только в компонуемых объектах или действиях, поэтому я создаю ViewModel в MainActivity и передаю Application (

Код: Выделить всё

Application
наследует класс Context) для инициализации БД. Затем я передаю ViewModel компоненту верхнего уровня.
Это работает нормально, но в руководствах Android этого следует избегать:

Код: Выделить всё

Strongly recommended:
ViewModels shouldn't hold a reference to any Lifecycle-related type.
Don't pass Activity, Fragment, Context or Resources as a dependency.
If something needs a Context in the ViewModel, you should strongly evaluate if that is in the right layer.
и

Код: Выделить всё

Recommended:
Use the ViewModel class, not AndroidViewModel.
The Application class shouldn't be used in the ViewModel. Instead, move the dependency to the UI or the data layer.
Куда мне тогда переместить зависимость базы данных?

Подробнее здесь: https://stackoverflow.com/questions/791 ... droid-comp
Ответить

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

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

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

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

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