Нет достаточного количества документации, чтобы понять, как именно работает метод runInTransaction ().При выполнении нескольких операций на разных DAO, если никакое значение не должно быть возвращено, я мог бы использовать runInTransaction(Runnable body)
ИЛИ runInTransaction(Callable<V> body)
, если должен быть возвращен какой-либо результат.
Запрос, который у меня есть: Есливсе запросы в транзакции выполнены успешно, затем я хочу вернуть объект изображения, который необходимо загрузить на сервер при успешной транзакции. Если произошло какое-либо исключение или транзакция не удалась, мне нужно вернуть логическое значение со значением false, чтобы указать пользователячто произошла какая-то ошибка.
Вот метод:
public boolean userCheckedIn(final User user) {
try {
appDatabase.runInTransaction(new Callable<Object>() {
@Override
public Object call() throws Exception {
if (user != null) {
//Add entry in table A
appDatabase.UserDao().add(user);
//Update entry in table B
//Delete an entry from table C
Event image = updateUserAction(action);
return image;
}
return null;
}
});
} catch (Exception e) {
return false;
}
return true;
}
В вышеупомянутом методе я намерен сделать, если все выполнения базы данных являютсяУспех мне нужно вернуть изображение, которое будет загружено на сервер.Если при выполнении транзакции БД возникло какое-либо исключение или произошла ошибка, мне нужно вернуть false
, чтобы пользователь знал, что произошла ошибка.Не уверен, правильно ли я понял.Кроме того, я должен поместить runInTransaction в блок try catch?