達(dá)令說(shuō)
2021-04-09 18:15:37
我對(duì)此很好奇..我剛用過(guò)房間,想了解更多有關(guān)..查詢是否會(huì)失敗嗎?我在通過(guò)方式插入或查詢時(shí)使用AsyncTask ..并且我沒有任何回調(diào)..我只是執(zhí)行它,然后保存它..每當(dāng)我查詢時(shí),我都會(huì)這樣:try { List<Object> objectList = new GetObjectTask.execute().get();} catch (Exception e) { e.printStack();}這是正確的方法嗎?這是GetObjectTask類public class GetObjectTask extends AsyncTask<Void, Void, List<Object>> { public GetObjectTask() { } @Override protected List<Object> doInBackground(Void... voids) { return AppDatabaseHelper.getInstance().getObjectDao().getAllObject(); }}
1 回答

MMTTMM
TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
這是正確的方法嗎?
這取決于您的設(shè)計(jì)。
要實(shí)現(xiàn)此目標(biāo),您將需要實(shí)現(xiàn)可感知生命周期的數(shù)據(jù)更新。反過(guò)來(lái),這將導(dǎo)致添加樣板代碼來(lái)管理配置更改。另外,您還需要添加額外的代碼來(lái)解析列表并相應(yīng)地更新視圖
您的Activity將充滿用于從DB訪問數(shù)據(jù)的代碼。理想情況下,您應(yīng)該避免這種情況,并使Activity僅負(fù)責(zé)處理視圖數(shù)據(jù)。活動(dòng)不應(yīng)該擔(dān)心數(shù)據(jù)源。
正確的方法是:
實(shí)現(xiàn)一個(gè)ViewModel體系結(jié)構(gòu)組件,并讓ViewModel處理數(shù)據(jù)庫(kù)操作。
由于Room可以返回
LiveData
,因此您可以輕松觀察更改并相應(yīng)地更新視圖。為此檢查出可觀察的查詢
添加回答
舉報(bào)
0/150
提交
取消