在Splash上​​预取数据

时间:2017-11-07 06:08:58

标签: android rx-java retrofit2 rx-android

我正在尝试实施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

但是没有执行上述日志语句。 你能帮忙解决我在这里做错的事吗。

感谢。

1 个答案:

答案 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更好的方法。我们可以使用refCountautoConnect

refCount

  

只要至少有一个订阅此Observable,就会返回与此ConnectableObservable保持关联的ConnectableObservable

autoConnect

  

返回自动连接到此的Observable   第一个订阅者订阅时ConnectableObservable