我怎么知道房间的@Insert 已完成?

Kya*_*ant 3 kotlin android-room kotlinx.coroutines

我的场景

我使用 Coroutines 和 Room 来保存我的应用程序的用户配置文件数据。我有 CompleteProfileActivity :在那个用户填写他们的信息并确认它(确认按钮)。我将它们发送到服务器并观察响应。如果响应成功。我将它们保存到我的 ProfileDatabase。

我的问题 我如何知道我的数据库已更新或我的插入已完成,我的删除不是通过获取大小来完成的?@Insert @Delete 是无效的返回方法。那么除了数据库大小我怎么知道呢?

@Dao
interface ProfileDao {
@Insert(onConflict = OnConflictStrategy.IGNORE)
fun saveProfile(model:Profile)

@Query("SELECT * FROM profile_table")
fun getProfile():Deferred<Profile>
}
Run Code Online (Sandbox Code Playgroud)

zsm*_*b13 8

如果插入的方法调用成功,则说明成功,否则会出现异常。

此外,这些不必是返回空值的方法。

您可以@Insert返回表中主键的类型,这将是新插入记录的键。

@Insert(onConflict = OnConflictStrategy.IGNORE)
fun saveProfile(model: Profile): Int
Run Code Online (Sandbox Code Playgroud)

在 的情况下@Delete,如果您返回 ,它将返回删除的行数Int

@Delete
fun deleteProfiles(profiles: List<Profile>): Int
Run Code Online (Sandbox Code Playgroud)

使用@Query,的更手动实现也是如此,如果返回 ,则返回受影响的行数Int

@Query("DELETE FROM profiles")
fun deleteAllProfiles(): Int
Run Code Online (Sandbox Code Playgroud)