片段初始化RxJava/RxAndroid时如何观察?

ddo*_*dog 0 android android-fragments rx-java

我有两个片段,每个片段都有发布主题,在onResume()初始化时调用onNext(true).我想结合这两个主题,并在它们都返回true时调用第三类中的某些方法.我需要使用Observable吗?我找不到合适的操作,zip不起作用,因为这些是主题.我该如何结合这些?

dwu*_*sen 5

主题既是Observer又是Observable.所以你可以使用zip操作符,即使是主题.

您可以做的是zipfilter操作员一起使用.

    Subject<Boolean, Boolean> sub1 = PublishSubject.create();
    Observable<Boolean> filter1 = sub1.filter((e) -> e); // filter only event is true

    Subject<Boolean, Boolean> sub2 = PublishSubject.create();
    Observable<Boolean> filter2 = sub2.filter((e) -> e);  // filter only event is true


    Observable.zip(filter1, filter2, (one, two) -> true).subscribe()
Run Code Online (Sandbox Code Playgroud)

如果您只是想知道每个片段是否已初始化,也许您可​​以发出片段而不是获得合同,如果:如果发出视图,那么它就准备好了.

class Fragment1 {
    Subject<Fragment, Fragment> sub1 = PublishSubject.create();

    public void onResume() {
         sub1.onNext(this);                
    }

}

class Fragment2 {
    Subject<Fragment, Fragment> sub1 = PublishSubject.create();

    public void onResume() {
         sub1.onNext(this);                
    }

}


class MyView {

     public onCreate() {
         Observable.zip(sub1, sub2, (one, two) -> true).subscribe((b) -> // dosomething)
     }


 }
Run Code Online (Sandbox Code Playgroud)