Observable.create()和Observable.fromCallable()之间的区别

hrs*_*krs 9 android rx-java rx-android rx-java2

假设我们ObjectSharedPrefs使用中得到一个泛型.create():

return Observable.create(subscriber -> {
      String json = sharedPreferences.getString(key, "");
      T myClass = gson.fromJson(json, generic);
      subscriber.onNext(myClass);
      subscriber.onComplete();
    });
Run Code Online (Sandbox Code Playgroud)

和使用.fromCallable():

return Observable.fromCallable(() -> {
      String json = sharedPreferences.getString(key, "");
      return gson.fromJson(json, generic);
    });
Run Code Online (Sandbox Code Playgroud)

如果我们onComplete()在第一次发出Observable.create()和使用后立即打电话有什么不同Observable.fromCallable()吗?如果是这样,那是pros/cons什么?

aka*_*okd 14

Observable.create让我们发出多个项目,同时fromCallable只发出一个项目.

您应该使用后者,因为它更具表现力的是具有单个元素序列并且具有略低的开销.

缺点是您不能使用异步单元素源,而是create让您将调用延迟onNext到稍后的时间点.

  • 请更加积极主动地查看可用的 RxJava 文档和 [wiki](https://github.com/ReactiveX/RxJava/wiki/Creating-Observables)。 (2认同)