访问 Room 数据库的正确方法是什么?
What is the correct way to access the Room database?
希望你能帮助我。
我刚开始使用 Android Jetpack,特定于 Room 组件。正如他们在文档中提到的那样,在主线程中访问数据库是一种不好的做法,所以我想知道我们如何访问数据库。我们需要创建一个 "Worker" 和一个 "WorkRequest",然后使用 WorkManager 在后台线程中排队?或者有更好的方法吗?
您需要创建一个新线程来 运行 房间查询。
如果你正在使用 Kotlin,那么协程将是你多线程的最佳选择
我建议您在 google code lab.
中学习这门课程
如果您熟悉响应式编程,您也可以将 RxJava 用于多线程。
WorkManager
不是访问 Room
数据库的正确方法。原因是:
WorkManager
is intended to be used to run deferrable,
guaranteed background asynchronous work when the work’s
constraints are satisfied
因此,有一些 WorkManager
待遇与访问 Room
数据库或一般来说的任何数据库不匹配:
- 首先:您需要即时访问数据库,但是
WorkManager
是可延期的。
- 其次:在大多数情况下,您需要在没有约束的情况下访问 Room 数据库,但是
WorkManager
在满足约束时运行。
相反,还有其他方法,例如 Thread
, Executors
, Kotlin Coroutines, and also LiveData
提供对数据库查询的异步访问。
查看其他文档链接:Concurrent and Threading
希望你能帮助我。
我刚开始使用 Android Jetpack,特定于 Room 组件。正如他们在文档中提到的那样,在主线程中访问数据库是一种不好的做法,所以我想知道我们如何访问数据库。我们需要创建一个 "Worker" 和一个 "WorkRequest",然后使用 WorkManager 在后台线程中排队?或者有更好的方法吗?
您需要创建一个新线程来 运行 房间查询。
如果你正在使用 Kotlin,那么协程将是你多线程的最佳选择 我建议您在 google code lab.
中学习这门课程如果您熟悉响应式编程,您也可以将 RxJava 用于多线程。
WorkManager
不是访问 Room
数据库的正确方法。原因是:
WorkManager
is intended to be used to run deferrable, guaranteed background asynchronous work when the work’s constraints are satisfied
因此,有一些 WorkManager
待遇与访问 Room
数据库或一般来说的任何数据库不匹配:
- 首先:您需要即时访问数据库,但是
WorkManager
是可延期的。 - 其次:在大多数情况下,您需要在没有约束的情况下访问 Room 数据库,但是
WorkManager
在满足约束时运行。
相反,还有其他方法,例如 Thread
, Executors
, Kotlin Coroutines, and also LiveData
提供对数据库查询的异步访问。
查看其他文档链接:Concurrent and Threading