我按照Google here提供的示例代码进行了Room库的存储。 我正在一个单独的线程上执行查询并加入每个查询线程,所以一旦一个线程完成,那么只有其他人会认为它会解决问题,但事实并非如此。现在我正在主线程上运行查询以使其现在正常工作。 任何人都可以告诉我如何使用单独的线程为每个查询使用此库。 我的查询是这样的 -
public static void insertUserDetails(Context context, User user, QueryResultCallback listener) {
Runnable r = () -> {
try {
long id = AppDatabase.getDatabase(context).userModel().insert(user);
getHandler().post(() -> listener.onSuccess(id));
} catch (Exception e) {
getHandler().post(() -> listener.onFailure(e));
}
};
runQuery(r);
}
和runQuery方法 -
private static void runQuery(Runnable runnable) {
Thread t = new Thread(runnable, DATABASE_THREAD);
t.start();
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
要对Room执行插入操作,您可以使用Android WorkManager在辅助线程上运行任务,并避免在主/ ui线程上运行任务。此外,请检查来自Google samples的kotlin示例代码,其中bulk insert中的一个已完成,并从JSON文件获取输入。此外,在构建数据库时,通过WorkManager as here批准了该工作。让我知道您是否需要更简单的代码或Java代码来了解如何在工作线程上完成插入操作。