Как правильно получить доступ к базе данных комнат? - PullRequest
1 голос
/ 06 мая 2020

Надеюсь, ты мне поможешь.

Я новичок в работе с Android Jetpack, в частности c с компонентом Room. Как они упоминают в документации, подключение к базе данных в основном потоке - плохая практика, поэтому мне было интересно, как мы получаем доступ к базе данных. Нам нужно создать «Worker» и «WorkRequest», а затем поставить в очередь фоновый поток с помощью WorkManager? Или есть способ получше?

Ответы [ 2 ]

1 голос
/ 06 мая 2020

WorkManager - неправильный способ доступа к базе данных Room. Причина в том, что:

WorkManager предназначен для использования отложенной , гарантированной фоновой асинхронной работы, когда выполняются ограничения работы

Итак, есть пара WorkManager обработок, которые вы не можете сопоставить с доступом к Room базе данных или любой другой базе данных, вообще говоря:

  • Первое: вам нужно мгновенное доступ к базе данных, но WorkManager можно отключить.
  • Второе: в большинстве случаев вам нужен доступ к базе данных Room без ограничений, но WorkManager запускается, когда ограничения удовлетворены.

Вместо этого есть другие способы, например Thread, Executors, Kotlin Coroutines , а также LiveData обеспечивает асинхронный доступ к запросам к базе данных.

Посмотрите другие ссылки на документацию: Concurrent и Threading

0 голосов
/ 06 мая 2020

Вам необходимо создать новый поток для выполнения запросов к комнатам.

Если вы используете Kotlin, то Coroutines будут вашим лучшим выбором для многопоточности. Я предлагаю вам пройти этот курс в google code lab.

Вы также можете использовать Rx Java для многопоточности, если вы знакомы с реактивным программированием.

...