이 글은 RxJava 2.x의 새로운 기능에 대한 관련 정보를 주로 소개합니다. 이 글은 그림, 텍스트, 샘플 코드를 통해 매우 자세하게 소개되어 있어 필요한 모든 사람이 살펴볼 수 있습니다. 아래에.
RxJava란
Rx는 비동기 반응형 프로그래밍이며, 본질은 관찰자 패턴, 관찰자와 구독자가 있는 비동기 반응형 프로그래밍.
이 글은 주로 RxJava 2.x의 새로운 기능에 대한 관련 정보를 소개합니다. 아래에서 할 말은 많지 않으나, 자세한 소개를 살펴보겠습니다.
배압 분리
플로우블/구독자
Flowable.range(0,10) .subscribe(new Subscriber<Integer>() { Subscription sub; //当订阅后,会首先调用这个方法,其实就相当于onStart(), //传入的Subscription s参数可以用于请求数据或者取消订阅 @Override public void onSubscribe(Subscription s) { Log.w("TAG","onsubscribe start"); sub=s; sub.request(1); Log.w("TAG","onsubscribe end"); } @Override public void onNext(Integer o) { Log.w("TAG","onNext--->"+o); sub.request(1); } @Override public void onError(Throwable t) { t.printStackTrace(); } @Override public void onComplete() { Log.w("TAG","onComplete"); } });
출력:
onsubscribe start onNext--->0 onNext--->1 onNext--->2 ... onNext--->10 onComplete onsubscribe end
위 코드의 출력에서 볼 수 있듯이 subscription.request(n)
메서드를 호출하면 onSubscribe()
코드가 실행되면 onNext 메소드가 즉시 실행되므로 onNext 메소드에서 초기화가 필요한 클래스를 사용하는 경우 이 메소드를 호출하기 전에 먼저 초기화를 시도해야 합니다. 🎜>subscription.request(n)
다른 생성 방법
Flowable.create(new FlowableOnSubscribe<Integer>() { @Override public void subscribe(FlowableEmitter<Integer> e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(3); e.onNext(4); e.onComplete(); } } //需要指定背压策略 , BackpressureStrategy.BUFFER);다른 관찰자 모드
//判断是否登陆 Maybe.just(isLogin()) //可能涉及到IO操作,放在子线程 .subscribeOn(Schedulers.newThread()) //取回结果传到主线程 .observeOn(AndroidSchedulers.mainThread()) .subscribe(new MaybeObserver<Boolean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onSuccess(Boolean value) { if(value){ ... }else{ ... } } @Override public void onError(Throwable e) { } @Override public void onComplete() { } });사실 이 옵저버 모드는 대용량 데이터를 전송할 때 사용하는 것이 아니라, 단일 데이터를 전송할 때 사용하는 모드입니다. 원하는 것만 원하는
이벤트
의 결과(참 또는 거짓)가 발생하면 이 관찰자 모드Rx1.0을 사용할 수 있습니다. Rx2 .0Action1——–Action
Action1——–Consumer
Action2——–BiConsumer
이후의 모든 Action은 제거되고 ActionN만 남습니다
위 내용은 RxJava 2.x의 새로운 기능을 요약한 그래픽 및 텍스트 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!