在自定义应用程序子类中创建Rx Observables是否可以接受?做的原因是,我可以在应用程序内部创建BehaviorSubject,并要求每10分钟从服务器进行更改,每个订阅此Observable的Activity或Fragment将只获取最后一次更改状态。在自定义应用程序子类中使用Observable
问题是这个架构在应用程序生命周期处理和易用性方面是否可以被认为是安全的?
class CustomApplication extends Application {
...
BehaviorSubject<Friends> mFriends = new BehaviorSubject<Friends>;
public void createObservables() {
Observable.create(new Observable.OnSubscribe<Friends>() {
public void call(Subscriber<?> s) {
while(true) {
mFriends.onNext("randomFriendN");
sleep(10sec);
}
}
})
.subscribeOn(Schedulers.newThread())
.subscribe(new Observer<List<NewsCategory>>() {
public void onNext(Friends f) { //empty }
});
}
public BehaviorSubject<Friends> getFriends() {
return mFriends;
}
}
UPDATE: 每次当新的活动创建的,想要得到的数据就可以得到它的ApplicationContext的BehaviorSubject然后订阅它,而主题将发出最后发出的值; 为什么我想这样做?例如。假设您有新闻项目,您获取了新闻源,并且您想要开始后台任务以获取新闻项目的全部内容,那么当您滚动新闻列表时,我可以开始获取数据,并且当您单击详细的活动时,我们可以显示它已经被抓取,或者只是下载它。
你能否提供一些伪代码来消除任何歧义? – nhaarman
提供了一种伪代码,感谢您的建议 – user1831986
只是一个改进提示:BehaviorSubject也是一个观察者。您可以直接订阅(BehaviorSubject)。 – zsxwing