我试图在用户退出时完全清除我的表格,但是删除表格似乎没有生效,当另一个用户登录时,旧数据仍然存在。我正在使用RXJava Completables和Room,我的代码类似于以下内容。
mDbManager.deleteAllFromTable(mCompositeDisposable)
.doOnComplete(new Action() {
@Override
public void run() {
//Finish logging out.
}
})
.subscribe();
Manager中的方法看起来像这样
@Override
public Completable deleteAllFromTable(final CompositeDisposable compositeDisposable) {
return Completable.fromAction(new Action() {
@Override
public void run() {
mContactDao.deleteAllFromTable();
vacuumTables(compositeDisposable);
}
}).subscribeOn(mSchedulerProvider.io())
.observeOn(mSchedulerProvider.ui());
}
Dao中的方法一般长这样
@Query("DELETE FROM table")
void deleteAllFromTable();
我已经尝试过在不清空数据库的情况下将查询标记为事务,同时创建一个删除抽象方法并清空表格,并将其标记为事务,但是数据仍然存在,当doOnComplete被调用时删除未完成。另外我想指出的是,当从表中删除数据时,还有其他通过外键链接的数据表也会一同删除。