Android Rxjava订阅了变量

Android Rxjava订阅了变量,第1张

概述我正在学习观察者模式,我希望我的观察者在改变它的值并做一些 *** 作时跟踪某个变量,我做了类似的事情:publicclassTestextendsMyChildActivity{privateintVARIABLE_TO_OBSERVE=0;Observable<Integer>mObservable=Observable.just(VARIABLE_TO_OBSERVE);

我正在学习观察者模式,我希望我的观察者在改变它的值并做一些 *** 作时跟踪某个变量,我做了类似的事情:

public class Test extends MyChildActivity {   private int VARIABLE_TO_OBSERVE = 0;   Observable<Integer> mObservable = Observable.just(VARIABLE_TO_OBSERVE);     protected voID onCreate() {/*onCreate method*/       super();       setContentVIEw();       method();       changeVariable();   }   public voID changeVariable() {       VARIABLE_TO_OBSERVE = 1;   }   public voID method() {       mObservable.map(value -> {            if (value == 1) doMethod2();            return String.valueOf(value);       }).subScribe(string -> System.out.println(string));   }   public voID doMethod2() {/*Do additional operations*/}}

但doMethod2()不会被调用

解决方法:

生活中没有什么是神奇的:如果你更新一个值,你的Observable将不会被通知.你必须自己做.例如,使用PublishSubject.

public class Test extends MyChildActivity {    private int VARIABLE_TO_OBSERVE = 0;    Subject<Integer> mObservable = PublishSubject.create();     protected voID onCreate() {/*onCreate method*/        super();        setContentVIEw();        method();        changeVariable();    }    public voID changeVariable() {        VARIABLE_TO_OBSERVE = 1;        // notify the Observable that the value just change        mObservable.onNext(VARIABLE_TO_OBSERVE);    }   public voID method() {       mObservable.map(value -> {           if (value == 1) doMethod2();           return String.valueOf(value);       }).subScribe(string -> System.out.println(string));   }   public voID doMethod2() {/*Do additional operations*/} }
总结

以上是内存溢出为你收集整理的Android Rxjava订阅了变量全部内容,希望文章能够帮你解决Android Rxjava订阅了变量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1100602.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存