小编bar*_*rbs的帖子

Room-插入新值后执行删除

我正在研究Rxjava2,并且正在尝试将Room Library与Rxjava2集成。问题是:我有一个填充的表,每次登录该应用程序时,都需要删除该表,然后在数据库中插入新内容。另外,在删除和插入工作正常,但是当我尝试我删除该表的内容后插入新值,删除方法删除所有的新的价值观。(代码的某些部分是在科特林和其他JAVA)
我已经尝试了以下方法:RxJava2 + Room:在clearAllTables()调用之后没有将数据插入DB中,但是没有成功。

@Dao
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(list:List<Something>)

@Query("DELETE FROM SomethingTable")
fun delete()

@Query("SELECT * FROM SomethingTable")
fun getAll(): Flowable<List<Something>>
Run Code Online (Sandbox Code Playgroud)

我的班级叫DAO(CallDao)

//insert
fun insertInDB(list: List<Something>) {
    Completable.fromAction {
        dbDAO!!.insert(list)
    }.observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .subscribe()
}

//delete
fun clean() {
    Completable.fromAction {
        dbDAO!!.delete()
    }.observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.single())
            .subscribe()
}

//search all
fun findAll(): Observable<List<Something>>? {
    return Observable.create { subscriber ->
        dbDAO!!.getAll()
                .subscribeOn(Schedulers.io())
                .subscribe {it->
                    subscriber.onNext(it)
                }
    }
}
Run Code Online (Sandbox Code Playgroud)

单击登录按钮时调用的方法

private void clearAndInsertInDB() {
CallDao callDao= new CallDao(getActivity());
//delete all …
Run Code Online (Sandbox Code Playgroud)

android kotlin rx-java2 android-room

5
推荐指数
1
解决办法
2216
查看次数

标签 统计

android ×1

android-room ×1

kotlin ×1

rx-java2 ×1