使用不带ViewModel的房间

Muk*_*Ali 2 sqlite android android-room

我刚开始使用android房间。唯一的问题是,数据库交互需要多层。表类-> Dao接口->数据库仓库-> ViewModels

并且在每一层中都有代码重复。

就像我直接从Repo调用查询,没有viewModels一样,它将不允许。因为没有viewModel观察器的调用变得同步,所以阻塞了主线程。

必须有异步调用回购协议的标准方法,或者是一些黑客。也许我们可以使用一些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());
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

Ste*_*han 6

您可以为此使用AsyncTask而不需要ViewModels。

AsyncTask.execute {
            val entity = daoInterface.queryFunction()
            ...
        }
Run Code Online (Sandbox Code Playgroud)


Ago*_*jaj 5

如果您只是在测试房间,请致电

.allowMainThreadQueries() 
Run Code Online (Sandbox Code Playgroud)

如果您要构建一个真正的应用程序,那么跳过此Android体系结构是没有意义的。