Android 如何在rxjava中设置多间隔
我有一个使用RxJava和interval操作符的场景。事实上,我可以为作业A设置时间间隔。就像那样Android 如何在rxjava中设置多间隔,android,rx-java,Android,Rx Java,我有一个使用RxJava和interval操作符的场景。事实上,我可以为作业A设置时间间隔。就像那样 Observable .interval(0, 10, TimeUnit.SECONDS) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .map(new Func1<Long, List<Bean>>() {
Observable
.interval(0, 10, TimeUnit.SECONDS)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.map(new Func1<Long, List<Bean>>() {
@Override
public List<Bean> call(Long pLong) {
return null;
}
})
.subscribe(new Action1<List<Bean>>() {
@Override
public void call(List<Bean> pO) {
if (pO.size() > 0) setData(pO);
}
});
可观察
.间隔(0,10,时间单位秒)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.map(新函数1(){
@凌驾
公共列表呼叫(长pLong){
返回null;
}
})
.订阅(新操作1(){
@凌驾
公共作废通知(列表pO){
如果(pO.size()>0)设置数据(pO);
}
});
但我试着为作业A、作业B、作业C设置间隔,但它们之间的间隔不同
作业A、作业B、作业C(30秒)
作业A->5秒->作业B->10秒->作业C
Observable
.interval(0, 30, TimeUnit.SECONDS)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(new Func1<Long, Observable<Long>>() {
@Override
public Observable<Long> call(Long pLong) {
//Job A
return Observable.interval(0, 5, TimeUnit.SECONDS);
}
})
.flatMap(new Func1<Long, Observable<Long>>() {
@Override
public Observable<Long> call(Long pLong) {
//Job B
return Observable.interval(0, 10, TimeUnit.SECONDS);
}
})
.subscribe(new Action1<Long>>() {
@Override
public void call(Long pO) {
//Job C
if (pO.size() > 0) setData(pO);
}
});
可观察
.间隔(0,30,时间单位秒)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(新函数1(){
@凌驾
公共可观测呼叫(长扑通声){
//工作
返回可观察间隔(0,5,时间单位秒);
}
})
.flatMap(新函数1(){
@凌驾
公共可观测呼叫(长扑通声){
//工作B
返回可观察间隔(0,10,时间单位秒);
}
})
.订阅(新操作1>(){
@凌驾
公众作废通知(龙埔){
//作业C
如果(pO.size()>0)设置数据(pO);
}
});
我试着用这样的东西,但运气不好。我是Rx新手,希望您能对其发表评论。.interval()生成事件序列,尝试使用.timer()触发另一个作业,或者使用.interval().take(1)。您将每5秒(重叠间隔?)启动作业B(10秒)很明显,您是否尝试每30秒执行一系列作业(A、B、C),其中每个作业之间都有延迟?