我怎么知道Room的@Insert完成了?

How can I know @Insert of Room is completed?

My scenario

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

My question How can I know my database is updated or my insertion is complete, my deletion is completed not by getting the size? @Insert @Delete is void return methods. So how can I know except the database size?

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

@Query("SELECT * FROM profile_table")
fun getProfile():Deferred<Profile>
}

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

此外,这些方法不必是无效的returning 方法。

你可以在table中有@Insertreturn主键的类型,这将是新插入记录的键。

@Insert(onConflict = OnConflictStrategy.IGNORE)
fun saveProfile(model: Profile): Int

@Delete 的情况下,如果您 return 一个 Int:

,它将 return 删除的行数
@Delete
fun deleteProfiles(profiles: List<Profile>): Int

同样适用于使用 @Query 的更多手动实施,如果您 return 和 Int:

,returns 受影响的行数
@Query("DELETE FROM profiles")
fun deleteAllProfiles(): Int