美文网首页
Android Room RxJava Update/Delet

Android Room RxJava Update/Delet

作者: 阮腾飞 | 来源:发表于2020-01-02 22:02 被阅读0次

    Room的基本使用有很多文章可以查看,简单推荐一个

    https://www.jianshu.com/p/72eeaded8913

    在实际的开发过程中,我们可能需要对增删改的返回值进行检测,但是很多涉及到Room和RxJava配合的文章里都没有写这个,都是写Search

    受到@Delete  @Insert  @Update的返回类型的影响,我们不好直接使用RxJava进行操作,所以需要转变一下思路

    我介绍的方法,是在我的项目中,实际使用的,有更好的方法,相互学习。以Delete为例

    数据局的delete操作的返回值是int,标明删除的行数。在Room中,@Query我的理解就是执行Sql语句

    int类型是不可以当做Observable使用的,但是我们可以把它转换成Observable的方式,直接上代码:

    在Dao中:

    @Query("DELETE FROM goods")

    int deleteAllGoods();

    在操作的类型中:

    Observable.create((ObservableOnSubscribe) emitter -> {

    int result = AppDatabase.getInstance(MainActivity.this).goodsDao()

    .deleteAllGoods();

        emitter.onNext(result);

    }).subscribeOn(Schedulers.io())

    .observeOn(AndroidSchedulers.mainThread())

    .subscribe(integer -> {

    Log.d(TAG, "accept: onNext and result is " + integer);

            }, throwable -> {

    Log.d(TAG, "clearAllGoods: failed");

            });

    道理很简单,就是通过emitter,将执行的结果发射出去

    相关文章

      网友评论

          本文标题:Android Room RxJava Update/Delet

          本文链接:https://www.haomeiwen.com/subject/kqkaoctx.html