小编TJ *_*sen的帖子

Room 查询是否异步发生?

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

fun insertThingAsync(thing: Thing) = async(Dispatchers.IO) {
  try {
    dao.deleteAllThings()
    dao.insertThing(thing)
  }
  catch (e: Throwable) {
    // Stuff
  }
}
Run Code Online (Sandbox Code Playgroud)

换句话说,在这种情况下,是否有可能在完成之前dao尝试插入,因此也有机会删除新插入的内容?thingdao.deleteAllThings()thing

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

roomDatabase.clearAllTables由于此线程中的对话,我还想知道与 的相同用例。

android asynchronous kotlin android-room

2
推荐指数
1
解决办法
1930
查看次数

Kotlin 序列化 @SerialName 不适用于布尔值

我正在使用 GSON 序列化一些平台数据。当我@SerialName在应用程序中使用不同的命名约定捕获平台数据时,它适用于其他类型,但不适用于Boolean类型。举一个简单的例子,如果我有一个像这样的课程......

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class Person (
    @SerialName("first_name") val firstName: String? = null,
    @SerialName("last_name") val lastName: String? = null,
    val age: Int? = null
)
Run Code Online (Sandbox Code Playgroud)

...一切正常。序列化器在数据中查找,first_name并正确设置.last_nameagePerson

但是,当我尝试添加Boolean...

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class Person (
    @SerialName("first_name") val firstName: String? = null,
    @SerialName("last_name") val lastName: String? = null,
    val age: Int? = null,
    @SerialName("can_sing") val canSing: Boolean? = null
)
Run Code Online (Sandbox Code Playgroud)

...序列化器不会捕获和分配can_sing。奇怪的是它适用于 a …

serialization android gson kotlin

2
推荐指数
1
解决办法
2672
查看次数