首先,我不知道Android和Java中的所有内容,我正在研究这个问题,以防你在我的问题中发现缺乏知识。
当我读到加载程序的好处时,我读到加载程序在单独的线程上运行,以防止UI无响应。
在出现并阅读了ViewModel,LiveData和Room以及阅读了这篇文章之后,特别是在“观察数据”部分,其中说
在世界上,将数据传输到UI将涉及在正确的位置调用,并构建>?。在架构组件世界中,世界更加简单。等。。
Loader
LoaderManager
initLoader()
LoaderCallbacks
和下一节
加载第二段中所说的所有内容
例如,Room 允许您拥有可观察的查询 — 返回的数据库查询,以便数据库更改自动通过您的 UI 向上传播。有点像没有触摸光标或加载器。
LiveData
ViewModel
CursorLoader
以上所有内容都意味着ViewModel和LiveData with Room可以在后台线程中工作,我的意思是当我们使用ViewModel和LiveData与Room而不是Loaders时,我们不需要使用AsyncTask或AsyncTaskLoader或Executer。
但在这些例子中:
带有视图的机器人房间,可以用作模板,正如他们在 README.md 中所说的那样,
在MainActivity中.java他们写,如果我们深入跟踪,我们发现该函数是select的查询,但是当他们想要在WordRepository.java或WordRoomDatabase中插入数据时.java他们使用AsyncTask,mWordViewModel.getAllWords().observe(this, .... ;
getAllWords()
我的意思是为什么他们使用ViewModel,LiveData和Dao来查询select,并且在插入的查询中,他们包含了带有ViewModel和Dao的AsyncTask?,因为正如上面所暗示的那样,ViewModel和LiveData with Room可以在后台线程中工作?
我之前的问题适用于此示例 android-persistence at step3_solution,我的意思是只获取使用 ViewModel 的数据,但要像在 DatabaseInitializer 中一样插入数据.java,AsyncTask 是否包括在内?
同样在这个 BasicSample 示例中,当必须插入数据时,将包含执行程序?
慕运维8079593
慕妹3146593
相关分类