我对此很好奇..我刚用过房间,想了解更多有关..查询是否会失败吗?我在通过方式插入或查询时使用AsyncTask ..并且我没有任何回调..我只是执行它,然后保存它..每当我查询时,我都会这样: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贡献1869条经验 获得超4个赞
这是正确的方法吗?
这取决于您的设计。
要实现此目标,您将需要实现可感知生命周期的数据更新。反过来,这将导致添加样板代码来管理配置更改。另外,您还需要添加额外的代码来解析列表并相应地更新视图
您的Activity将充满用于从DB访问数据的代码。理想情况下,您应该避免这种情况,并使Activity仅负责处理视图数据。活动不应该担心数据源。
正确的方法是:
实现一个ViewModel体系结构组件,并让ViewModel处理数据库操作。
由于Room可以返回
LiveData
,因此您可以轻松观察更改并相应地更新视图。为此检查出可观察的查询
添加回答
举报
0/150
提交
取消