我正在尝试实施Feed应用。我想在Splash Activity上进行网络调用以获取新的Feed,这将最多运行3秒(无论网络调用是否完成),然后移动到我的主屏幕,用户可以看到提要。我希望我在Splash中调用的响应能够返回到我的Home活动。我正在使用Retrofit和RxJava进行网络调用。我试图使用带有重放运算符的ConnectableObserver来尝试这个,但是它没有用。
在SplashActivity的onCreate中我调用了一个方法
MyClientNetworkUtil.initObservable();
MyClientNetworkUtil类具有以下代码
公共类MyClientNetworkUtil {
x86
}
然后在我的HomeActivity的onCreate函数中,我正在尝试:
arch/x86/boot/uncompressed/head_32.S arch/x86/boot/uncompressed/piggy.S
但是没有执行上述日志语句。 你能帮忙解决我在这里做错的事吗。
感谢。
答案 0 :(得分:0)
您错误地使用了ConnectableObservable
。
connect
方法指示它开始从中发出项目 它的基础Observable到它的订阅者。
因此,您应首先subscribe
,然后connect
。
此代码可以使用:
public static void main(String[] args) throws Exception {
initObservable();
getObservable().forEach(System.out::println);
x.connect();
Thread.sleep(1000);
}
private static ConnectableObservable<List<Integer>> x;
public static void initObservable() {
Observable<List<Integer>> o = Observable.range(1, 50).buffer(10);
x = o.subscribeOn(Schedulers.io()).publish();
// x.connect();
}
public static Observable<List<Integer>> getObservable() {
return x.replay(1).refCount();
}
但我们有比connect
更好的方法。我们可以使用refCount
或autoConnect
。
refCount
只要至少有一个订阅此
Observable
,就会返回与此ConnectableObservable
保持关联的ConnectableObservable
。
autoConnect
返回自动连接到此的
Observable
第一个订阅者订阅时ConnectableObservable
。