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

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

Сообщение Anonymous »

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

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

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

Настоятельно рекомендуется:
ViewModels не должны содержать ссылки на какой-либо тип, связанный с жизненным циклом.
Не передавайте Activity, Fragment, Context или Resources в качестве зависимости.
Если для чего-то нужен контекст в ViewModel, вам следует тщательно
проверить, находится ли он на правильном уровне.

и< /p>

Рекомендуется:
Используйте класс ViewModel, а не AndroidViewModel. Класс Application не следует использовать в ViewModel. Вместо этого переместите зависимость в пользовательский интерфейс или на уровень данных.

Куда тогда мне следует переместить зависимость от базы данных?

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

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

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

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

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

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