在自定义应用程序子类中创建 Rx Observables 是否可以接受。这样做的原因是,我可以在应用程序中创建 BehaviorSubject 并每 10 分钟从服务器请求更改一次,订阅此 Observable 的每个 Activity 或 Fragment 将仅获得更改的最后状态。
问题是这种架构在应用程序生命周期处理和易于使用方面是否可以被认为是安全的?
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;
}
}
更新: 每次创建新活动并想要获取数据时,它都可以获取 ApplicationContext 的 BehaviorSubject 然后订阅它,Subject 将发出最后一个发出的值;为什么我要这样做?例如,假设您有新闻项目,您获取了新闻提要,并且您想要启动获取新闻项目完整内容的后台任务,在这种情况下,我可以在您滚动新闻列表时开始获取数据,当您单击详细活动时,我们可以从已经获取的显示它,或者只是下载它。