这是我试图用我的Android应用程序中的rxJava和Dagger2解决的用例。
REST调用通过匕首组件注入。我正在努力设置rxJava来创建一个监视器,它将刷新REST调用,直到进程为100%并停止,或者用户只是退出屏幕。
我不确定我是否以正确的方式提出这个问题,所以如果需要更新,请告诉我。
以下是github repo上我的演示者的链接。这会加载数据并需要将更新触发回负责显示数据的片段。
更新时间:2015-10-26 PM 我知道这可能是一个黑客攻击,但这就是我实现重复延迟调用的方式:
@Override
protected Observable buildUseCaseObservable() {
Action1<List<LiveStreamInfo>> onNextAction = new Action1<List<LiveStreamInfo>>() {
@Override
public void call( List<LiveStreamInfo> liveStreamInfos ) {
try {
Thread.sleep( 5000 );
} catch( InterruptedException e ) { }
}
};
return this.contentRepository.liveStreamInfos( this.filename )
.repeat( Schedulers.io() )
.doOnNext( onNextAction );
}
然后,在建立subriber的调用方法中:
private void getProgramDetails() {
this.getProgramDetailsUseCase.execute(new ProgramDetailsSubscriber());
}
订阅者:
private final class LiveStreamInfosListSubscriber extends DefaultSubscriber<List<LiveStreamInfo>> {
@Override
public void onCompleted() {
...
}
@Override
public void onError( Throwable e ) {
...
}
@Override
public void onNext( List<LiveStreamInfo> liveStreamInfos ) {
if( null != liveStreamInfos && !liveStreamInfos.isEmpty() ) {
ProgramDetailsPresenter.this.showLiveStreamDetailsInView( liveStreamInfos.get( 0 ) );
if( liveStreamInfos.get( 0 ).getPercentComplete() == 100 ) {
ProgramDetailsPresenter.this.getLiveStreamsListUseCase.unsubscribe();
}
}
}
}
一旦完成百分比达到100%,订阅者将取消订阅可观察量,取消所有未来的通话。这样做的好处是,当用户从应用程序内部启动转码,创建实时流,或者从后端接收它时,该订户会从后端Web界面启动。
答案 0 :(得分:0)
如何添加.retry()以及重试次数和rx观察者重试次数的大值。然后在退出片段时取消订阅源可观察量以停止轮询。