【问题标题】:How to observe when fragments initialized RxJava/RxAndroid?如何观察片段何时初始化 RxJava/RxAndroid?
【发布时间】:2014-10-20 12:41:58
【问题描述】:

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

【问题讨论】:

    标签: android android-fragments rx-java


    【解决方案1】:

    主题既是观察者又是可观察者。因此您可以使用 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()
    

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

    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)
         }
    
    
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-14
      • 2018-01-03
      • 2018-01-29
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      相关资源
      最近更新 更多