Java Android Room持久化中的插入、更新、删除和查询是否曾经失败?

Java Android Room持久化中的插入、更新、删除和查询是否曾经失败?,java,android,Java,Android,我只是好奇而已。。我最近刚用过这个房间,想知道更多关于它的情况。。查询曾经失败过吗?顺便说一下,我在插入或查询时使用的是AsyncTask。。我没有任何回电。。我只是执行它,然后就保存了。。每当我询问时,我都是这样做的: try { List<Object> objectList = new GetObjectTask.execute().get(); } catch (Exception e) { e.printStack(); } 试试看{ List objec

我只是好奇而已。。我最近刚用过这个房间,想知道更多关于它的情况。。查询曾经失败过吗?顺便说一下,我在插入或查询时使用的是AsyncTask。。我没有任何回电。。我只是执行它,然后就保存了。。每当我询问时,我都是这样做的:

try {
    List<Object> objectList = new GetObjectTask.execute().get();
} catch (Exception e) {
    e.printStack();
}
试试看{
List objectList=新建GetObjectTask.execute().get();
}捕获(例外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();
    }
}
公共类GetObjectTask扩展了AsyncTask{
公共GetObjectTask(){
}
@凌驾
受保护列表背景(无效…无效){
返回AppDatabaseHelper.getInstance().getObjectDao().getAllObject();
}
}
这是正确的方法吗

这取决于你的设计

  • 在这种情况下实施需要您自己实施生命周期感知数据更新。这反过来将导致添加样板代码来管理配置更改。您还需要添加额外的代码来解析列表并相应地更新视图
  • 您的活动将被用于从DB访问数据的代码所淹没。理想情况下,您应该避免这种情况,让活动只负责处理视图数据。活动不应该关心数据源
正确的方法是:

  • 实现一个架构组件,并让ViewModel处理db操作

  • 由于Room能够返回
    LiveData
    ,因此您可以轻松地观察更改并相应地更新视图。为此,请查看


是。。我正在后台执行操作。。这是asynctask中的代码@重写受保护列表doInBackground(Void…voids){返回AppDatabaseHelper.getInstance().getBeaconsDao().getAllBeacons();}@ChristianBringino使用此信息更新您的问题。完成。。我更新了我的question@ChristianBringino检查乳房answer@ChristianBringino如果没有正确设置约束,它可能会失败。例如,您试图再次插入相同的数据,但未设置冲突策略。如果您决定为自定义查询编写自己的处理程序,可能会出现一些IOException。