交易中的Android Room DB同步/异步

时间:2019-04-23 20:02:12

标签: android android-room

根据我的在线阅读,如果返回类型为flowable或LiveData类型,则Dao方法将异步执行,否则将同步执行。是还是否?

我的问题是这样,因为当我希望它是同步的时,我似乎正在得到异步行为。是同步还是异步完成?

@Query("DELETE FROM Tag")
public abstract void deleteTags();

我目前在我的Dao中有一个@Transaction注释方法,该方法调用了与上面类似的10种不同方法,但是我的质量检查小组通知我,某些表中有一些不良数据...意味着这些表中有旧数据。在@Transaction方法到达其回调之前应该已经删除了。

这仅在较大的数据集下发生...这使我相信我的删除事务:

@Transaction
public void deleteTables()

可能正在报告事务完成之前所有删除查询都已完成。我在交易中的所有查询均返回void。

我做错了什么,导致它异步了吗?

这是我的调用方法:

executorService.execute(() -> {

   DAO.deleteTables();

   callback.onComplete(Resource.success()); <--I think this is hit prematurely. 
});

0 个答案:

没有答案