数据库使用RxJava操作符

Maybe
@Query(“SELECT * FROM Users WHERE id = :userId”)
Maybe<User> getUserById(String userId);

发生了什么呢?
1.若数据库中没有用户,那么Maybe就会被complete(RxJava中概念)
2.若数据库中有一个用户,那么Maybe就会触发onSuccess方法并且被complete
3.若数据库中用户信息在Maybe被complete之后被更新了,啥都不会发生

Single
@Query(“SELECT * FROM Users WHERE id = :userId”)
Single<User> getUserById(String userId);

就会发生这些事情:
1.若数据库中没有用户,那么Single就会触发onError(EmptyResultSetException.class)
2.若数据库中有一个用户,那么Single就会触发onSuccess
3.若数据库中用户信息在Single.onComplete调用之后被更新了,啥都不会发生,因为数据流已经完成了

Flowable
@Query(“SELECT * FROM Users WHERE id = :userId”)
Flowable<User> getUserById(String userId);

Flowable会这样运行:
1.若数据库中没有用户,那么Flowable就不会发射事件,既不运行onNext,也不运行onError
2.若数据库中有一个用户,那么Flowable就会触发onNext
3.若数据库中用户信息被更新了,Flowable就会自动发射事件,允许你根据更新的数据来更新UI界面

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

推荐阅读更多精彩内容

  • 懒得处理样式了, 将就着看吧. 官网地址: https://developer.android.com/topic...
    Reddington_604e阅读 1,724评论 0 1
  • 译文:原文地址 更少的公式化代码,更少的SQL语句的编译时间,更少的基于SQL的异步观测查询语句的编译时间--- ...
    restress阅读 6,403评论 8 10
  • Rxjava2 可谓是日常开发中的利器,特别是在异步任务中更能发挥作用。响应式编程以及流式api的良好支持,给予了...
    hewking阅读 1,082评论 0 3
  • 看到此文,你应该是你的技术圈第一个感知到RxJava 3.0.0-RC0来袭的大牛... 本文已经更新在掘金,请不...
    GitCode8阅读 10,468评论 4 59
  • 光绪银币丁未双龙一两市场收藏价值如何? 银币是机制币收藏的大类,历来都受到很多藏家的关注,不同版别的银币都有独特的...
    藏品盛世阅读 349评论 0 0