Из того, что я прочитал онлайн, метод Dao будет выполняться асинхронно, если возвращаемый тип имеет тип flowable или LiveData, в противном случае он будет выполняться синхронно. Правильно или нет?
У меня такой вопрос, потому что я, кажется, получаю асинхронное поведение, когда хочу, чтобы оно было синхронным. Будет ли это сделано синхронно или асинхронно?
@Query("DELETE FROM Tag")
public abstract void deleteTags();
В настоящее время у меня в Dao есть аннотированный метод @Transaction, который вызывает 10 различных методов, аналогичных описанным выше, но моя команда QA сообщила мне, что в некоторых таблицах есть некоторые неверные данные ... то есть таблицы имеют старые данные это должно было быть удалено прежде, чем метод @Transaction достигнет своего обратного вызова.
Это происходит только с большими наборами данных ... что заставляет меня поверить, что моя транзакция удаления:
@Transaction
public void deleteTables()
может сообщать, что оно завершено до завершения всех запросов на удаление в транзакции. Все мои запросы в транзакции возвращаются недействительными.
Я делаю что-то не так, вызывая асинхронность?
Это мой метод вызова:
executorService.execute(() -> {
DAO.deleteTables();
callback.onComplete(Resource.success()); <--I think this is hit prematurely.
});