我正在学习观察者模式,我希望我的观察者在改变它的值并做一些 *** 作时跟踪某个变量,我做了类似的事情:
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订阅了变量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)