java - Android Room Persistence 中的插入、更新、删除和查询是否会失败?

标签 java android

我只是对此感到好奇..我最近刚使用过房间,想了解更多关于它的信息..查询是否会失败?顺便说一下,我在插入或查询时使用 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();
    }
}

最佳答案

is this the proper way?

这取决于您的设计。

  • 实现此功能需要您自行实现生命周期感知数据更新。这反过来将导致添加样板代码来管理配置更改。您还需要添加额外的代码来解析列表并相应地更新 View
  • 您的 Activity 将因用于从数据库访问数据的代码而变得臃肿。理想情况下,您应该避免这种情况,并让 Activity 只负责处理 View 数据。 Activity 不应该关心数据源。

正确的方法是:

  • 实现 ViewModel架构组件并让 ViewModel 处理数据库操作。

  • 由于 Room 能够返回 LiveData,您可以轻松观察变化并相应地更新您的 View 。查看observable queries为此目的

关于java - Android Room Persistence 中的插入、更新、删除和查询是否会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50939455/

相关文章:

java - 新字符串有什么问题?

java - 空指针异常 Android 应用程序

java - Android 中从哪里获取 R.id.container?

java - 具有基本 token 身份验证的 OkHttp 适用于 GET,但不适用于 DELETE

java - 检查有效 session : isRequestedSessionIdValid() vs getSession(false)

Java - 解析行

java - 检查用户是否是 java 应用程序中的 root

java - 使单例成为 Spring bean 的正确方法

java - 从语言代码中获取该语言的语言名称

php - 如何使用php搜索该字符串是否作为android中mysql数据库中的值存在?