Android Room + AsyncTask

Nic*_*ckB 11 android-asynctask android-room

我的团队开发了一个新的Android应用程序,广泛使用Room.

我不确定我们是否正确使用AsyncTask.

我们必须将所有调用包装在AsyncTasks中插入/更新/删除,这会产生大量的AsyncTasks.所有进入房间的电话都来自后台服务.活动或片段没有直接的房间访问权限 - 他们通过LiveData获取所有内容.

插入行的示例调用:

AsyncTask.execute(() -> myModelDAO.insertInstance(myModel));
Run Code Online (Sandbox Code Playgroud)

有了这个在DAO中:

@Insert
void insertInstance(MyModel model);
Run Code Online (Sandbox Code Playgroud)

Phi*_*hil 18

要完成@CommonsWare答案,您可以使用Executor类在后台线程中执行Room查询.

Executor myExecutor = Executors.newSingleThreadExecutor();
myExecutor.execute(() -> {
   myModelDAO.insertInstance(myModel)
});
Run Code Online (Sandbox Code Playgroud)

Google在他们的Android架构组件指南中展示了一个示例.

  • 这是否相当于AsyncTask?使用它比asynctask有什么好处,你能解释一下吗? (6认同)

Com*_*are 6

进入会议室的所有电话均来自后台服务

那么您不应该使用AsyncTaskAsyncTask只有当你想这样做后台工作后做了主应用程序线程的工作,那就是几乎从不与服务的情况。使用其他东西(线程,线程池,RxJava等)。这与Room没有特定关系。