您的位置:首页 > 移动开发 > Android开发

RXAndroid Single的使用

2015-12-30 21:50 489 查看

RXjava详细文档翻译

入门级别
     http://gank.io/post 点击打开链接
流程级别文档介绍
      RX git

我理解Single的其实就是Observable变种。
Single类似于Observable(被观察者),
不同的是,它总是只发射一个值,或者一个错误通知,而不是发射一系列的值。
因此,不同于Observable需要三个方法onNext, onError, onCompleted,

订阅Single只需要两个方法:
onSuccess - Single发射单个的值到这个方法
onError - 如果无法发射需要的值,Single发射一个Throwable对象到这个方法
Single只会调用这两个方法中的一个,而且只会调用一次,调用了任何一个方法之后,订阅关系终止。

Single的操作符

Single也可以组合使用多种操作,一些操作符让你可以混合使用Observable和Single:

操作符返回值说明
composeSingle创建一个自定义的操作符
concat and concatWithObservable连接多个Single和Observable发射的数据
createSingle调用观察者的create方法创建一个Single
errorSingle返回一个立即给订阅者发射错误通知的Single
flatMapSingle返回一个Single,它发射对原Single的数据执行flatMap操作后的结果
flatMapObservableObservable返回一个Observable,它发射对原Single的数据执行flatMap操作后的结果
fromSingle将Future转换成Single
justSingle返回一个发射一个指定值的Single
mapSingle返回一个Single,它发射对原Single的数据执行map操作后的结果
mergeSingle将一个Single(它发射的数据是另一个Single,假设为B)转换成另一个Single(它发射来自另一个Single(B)的数据)
merge and mergeWithObservable合并发射来自多个Single的数据
observeOnSingle指示Single在指定的调度程序上调用订阅者的方法
onErrorReturnSingle将一个发射错误通知的Single转换成一个发射指定数据项的Single
subscribeOnSingle指示Single在指定的调度程序上执行操作
timeoutSingle它给原有的Single添加超时控制,如果超时了就发射一个错误通知
toSingleSingle将一个发射单个值的Observable转换为一个Single
zip and zipWithSingle将多个Single转换为一个,后者发射的数据是对前者应用一个函数后的结果
在代码中使用

//首先创建例子
Single.create(new Single.OnSubscribe<LocalAccount>() {
@Override
public void call(SingleSubscriber<? super LocalAccount> singleSubscriber) {
singleSubscriber.onSuccess(new LocalAccount(getView().getContextCompat()));
}
}).flatMap(new Func1<LocalAccount, Single<List<MediaEntry>>>() {
@Override
public Single<List<MediaEntry>> call(LocalAccount localAccount) {
if (localAccount != null) {
return localAccount.getEntries(getPath(),
SharedPrefUtils.isExplorerMode(getView().getContextCompat()),
SharedPrefUtils.getFilterMode(getView().getContextCompat()),
SortMemoryProvider.getSortMode(getView().getContextCompat(), getPath()));
}
return null;
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: