Как я могу знать, что @Insert of Room завершен? - PullRequest
0 голосов
/ 30 января 2019

Мой сценарий

Я использую сопрограммы и 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>
}

1 Ответ

0 голосов
/ 30 января 2019

Если вызов метода был успешным для вставки, то он был успешным, иначе вы получите исключение.

Кроме того, эти методы не обязательно должны возвращать пустые значения.

Вы можете @Insert вернуть тип первичного ключа в таблице, который будет ключомвновь вставленная запись.

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

В случае @Delete он вернет количество удаленных строк, если вы вернете Int:

@Delete
fun deleteProfiles(profiles: List<Profile>): Int

То же самое касается болееручная реализация с использованием @Query возвращает количество затронутых строк, если вы возвращаете Int:

@Query("DELETE FROM profiles")
fun deleteAllProfiles(): Int
...