Android Room RxJava Update/Delete 返回值

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,将执行的结果发射出去

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 过年的这个月,忙忙碌碌的~ 年前每天搞卫生,炸发肉,买水果,买零食,洗被子,买衣服,折腾头发~ 各种各种都在为过年...
    穗穗念吖念阅读 71评论 0 1
  • 人,向往有趣的生活,却往往陷入咸鱼般的日常。一事无成的人总把自己的普通归于时机,满足的沉浸于自己的营造的舒适圈。我...
    逍遥清风阅读 278评论 0 1
  • 总有人说,上帝为你关上一扇门,就会打开一扇窗。 那上帝给大部分人打开的一扇窗大概就是身体健康吧,其实人...
    TXT桃阅读 265评论 0 1
  • 刘晓飞 坚持分享第784天 今天下午意外收到国培坊主发来的信息,推荐我为县级教学标兵。要说这个证件对于我来说...
    花开盛夏阅读 164评论 0 0