Android Room DB Sync / Async в транзакции - PullRequest
0 голосов
/ 23 апреля 2019

Из того, что я прочитал онлайн, метод 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. 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...