В моем приложении для Android после успешного входа в систему Я сохраняю информацию о сеансе в Room, затем извлекаю информацию о пользователе из BE и сохраняю ее.
Все отлично работает Я могу видеть сохраненную информацию в таблицах базы данных.
Когда пользователь выходит из приложения , все таблицы очищаются с помощью вызова метода appDatabase.clearAllTables ().
Загвоздка в том, что при последующем входе в систему нет информации, которая вставляется в DB , но мои вызовы Rx не выдают никаких ошибок.
Я пытался использовать ведение журнала и отладку, но все выглядит нормально.
В журнале отображаются следующие выполняемые действия: войти в систему -> получить информацию о пользователе из BE -> сохранить сеанс -> сохранить пользователя.
При отладке я вижу, что информация о пользователе обрабатывается в методе insertUser () UserDao_Impl.
В приложении я использую RxJava2 версии 2.2.2, Библиотеку персистентности помещения версии 1.1.1, предоставляются зависимости от Dagger версии 2.19.
Вот мои фрагменты кода:
LoginUserUseCase.java
public Completable execute(@NonNull LoginInfo loginInfo) {
Completable loginAndSaveSession = sessionRepository.loginUser(loginInfo)
.flatMapCompletable(
session -> sessionRepository.saveSession(
session));
Completable getAndSaveUserInfo = userRepository.getRemoteUserInfo()
.flatMapCompletable(
user -> userRepository.saveUser(
user));
return loginAndSaveSession.andThen(getAndSaveUserInfo);
}
UserRepository.java
public Completable saveUser(@NonNull User user) {
return Completable.fromAction(() -> userDao.insertUser(user));
}
UserDao.java
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertUser(User user);
LogoutUserUseCase.java
public Completable execute() {
return Completable.fromAction(() -> appDatabase.clearAllTables());
}
ОБНОВЛЕНИЕ (ВОПРОС РЕШЕНО): потратили впустую день на эту ошибку. Наконец, пришло понимание, что какая-то другая библиотека может повлиять на работу приложения с Room. Оказалось, что библиотека отладочной базы данных Android , которую я использовал для просмотра базы данных на устройстве , имеет ошибку , которая разрушает БД после того, как вы однажды открыли ее с ее помощью .
Возвращаясь к Стето.