数据库使用RxJava操作符

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

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

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

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

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

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

你可能感兴趣的:(数据库使用RxJava操作符)