Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在rxjava中设置多间隔_Android_Rx Java - Fatal编程技术网

Android 如何在rxjava中设置多间隔

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>>() {

我有一个使用RxJava和interval操作符的场景。事实上,我可以为作业A设置时间间隔。就像那样

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),其中每个作业之间都有延迟?