【发布时间】:2018-05-03 07:18:58
【问题描述】:
我刚开始使用安卓房间。唯一的问题是, 数据库交互需要多层。 Table Class -> Dao 接口 -> Database Repo -> ViewModels
并且在每一层中,都有代码重复。
好像我直接从 Repo 调用查询,没有 viewModels,它不会允许。因为没有 viewModel 观察者的调用会变成同步的,这会阻塞主线程。
要么必须有标准的方式来异步调用 repo,要么有一些技巧。 也许我们可以使用一些 Async 泛型类,它可以让您传递查询并将结果返回到主线程。
可能的黑客攻击。不知道对不对。
AsyncTask.execute(new Runnable() {
@Override
public void run() {
List<User> users = apiService.getAllUsers();
if(users.size()>0)
{
System.out.println("Total users:"+users.size());
System.out.println("Email:"+users.get(0).getEmail());
}
}
});
【问题讨论】:
-
因为没有 ViewModel 观察者的调用是同步的,这会阻塞主线程。 你不需要 ViewModel 来使你的调用异步,因为它只需要实时数据。我认为您的问题应该是是否可以在没有 Android Architecture 库的情况下使用 Room?.
标签: android sqlite android-room