美文网首页
数据库使用RxJava操作符

数据库使用RxJava操作符

作者: 半生黑豆 | 来源:发表于2019-11-25 15:23 被阅读0次

    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界面

    相关文章

      网友评论

          本文标题:数据库使用RxJava操作符

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