
mObservable = retryObservable(mService.getAddressList(getUserID(),true,1,Integer.MAX_VALUE,"ID",true) .map(r -> { return r.getItems(); }) .observeOn(AndroIDSchedulers.mainThread())); 然后订阅
mSubscription = mObservable.subscribe(items -> { mAddressAdapter.swAPItems(items); },getActivityBase()::showError); 订阅初始化到来时,将激活cold observable并触发http请求.现在,我知道基础数据已经发生了变化,我需要做出同样的新请求.
我试过了
mSubscription.unsubscribe();
然后打电话
mObservable.subscribe(items -> {doSomething();}) 再次,从我的理解,订阅应该触发可观察,但它不起作用.
有什么建议 ?
将代码包装到方法中,每次都创建一个新的observable.
Observable<?> getobservable() { return retryObservable(mService.getAddressList(getUserID(),true) .map(r -> { return r.getItems(); }) .observeOn(AndroIDSchedulers.mainThread()));} 正如@DaveSexton在评论中提到的那样,在RxJava中使用延迟函数甚至更好
Do not create the Observable until a Subscriber subscribes; create a
fresh Observable on each subscriptionPass defer( ) an Observable factory function (a function that
generates Observables),and defer( ) will return an Observable that
will call this function to generate its Observable sequence afresh
each time a new Subscriber subscribes.
更多这里:https://github.com/ReactiveX/RxJava/wiki/Creating-Observables#defer
总结以上是内存溢出为你收集整理的android – 如何刷新RxJava中的observable?全部内容,希望文章能够帮你解决android – 如何刷新RxJava中的observable?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)