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是只有当你想这样做后台工作后做了主应用程序线程的工作,那就是几乎从不与服务的情况。使用其他东西(线程,线程池,RxJava等)。这与Room没有特定关系。
| 归档时间: |
|
| 查看次数: |
10144 次 |
| 最近记录: |