Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 房间查询是否异步进行?_Android_Asynchronous_Kotlin_Android Room - Fatal编程技术网

Android 房间查询是否异步进行?

Android 房间查询是否异步进行?,android,asynchronous,kotlin,android-room,Android,Asynchronous,Kotlin,Android Room,查询是异步的吗?如果是这样,由于缺乏更好的术语,像这样的异步/竞争条件安全吗 fun insertThingAsync(thing:thing)=异步(Dispatchers.IO){ 试一试{ dao.deleteAllThings() 刀插入物(物) } 捕获(e:可丢弃){ //东西 } } 换句话说,在这种情况下,dao是否可能在dao.deleteAllThings()完成之前尝试插入thing,从而有机会删除新插入的thing 如果是这样的话,你们有什么方法来处理这样的事情,以确保

查询是异步的吗?如果是这样,由于缺乏更好的术语,像这样的异步/竞争条件安全吗

fun insertThingAsync(thing:thing)=异步(Dispatchers.IO){
试一试{
dao.deleteAllThings()
刀插入物(物)
}
捕获(e:可丢弃){
//东西
}
}
换句话说,在这种情况下,
dao
是否可能在
dao.deleteAllThings()
完成之前尝试插入
thing
,从而有机会删除新插入的
thing

如果是这样的话,你们有什么方法来处理这样的事情,以确保在删除完成之前不会尝试插入


我还想知道关于
roomDatabase.clearAllTables
的相同用例,因为对话。

它们不是异步的。如果它们是普通的
@Delete
@Insert
DAO方法,那么它们应该自然序列化,因为这些方法是同步执行的

Room执行异步操作的唯一位置是在
@Query
上,返回值为被动返回值(LiveData、Flowable等)

在不同线程中或从不同的调度器/分派器启动多个事务/操作时,并发修改可能会出现问题

在您的情况下,您有一个协同程序,在其中它们将按顺序运行。因此,可以放心地认为您将先删除,然后插入

您还可以创建
事务
,以执行多个查询