【发布时间】:2016-10-28 04:23:28
【问题描述】:
我必须在我的应用程序运行之前进行一些配置,例如安装异常处理程序。因为我的应用程序有多个入口点(Activity、SyncAdapter)我只想在我的Application 类中执行此配置一次并在入口点(Activity、SyncAdapter)上观察它。如果入口点启动时配置已经完成,那么关于结果的信息应该仍然可用。
这是Application 类中的Observable (RxJava 2):
ConnectableObservable<Boolean> observable = Observable.create(…)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.cache()
.publish();
observable.connect();
那是Activity中的观察者:
observable.subscribe(…);
observable.connect();
这就是SyncAdapter中的观察者:
observable.blockingSubscribe(…);
observable.connect();
Observable 和 Activity 中的观察者正在做我想做的事情,即使在 Observable 完成工作后观察者连接时也会立即完成。但是如果Observable 完成工作后连接,SyncAdapter 中的观察者将永远阻塞。
我的问题:
- 我错过了什么?
- 有没有办法以更惯用的方式解决这个问题,例如通过使用
Completable?
【问题讨论】:
-
你能展示一下 Observable.create(...) 的实现吗?为什么要在 SyncAdapter 中使用 blockinSub 而不是在 Activity 中?如果你错过了“真实”,你将因为 observable (publish-connect) 的热特性而永远阻塞。
标签: android rx-java rx-android