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

Difference between Observable.create() and Observable.fromCallable()

假设我们使用 .create():

SharedPrefs 得到一个通用的 Object
return Observable.create(subscriber -> {
      String json = sharedPreferences.getString(key, "");
      T myClass = gson.fromJson(json, generic);
      subscriber.onNext(myClass);
      subscriber.onComplete();
    });

并使用 .fromCallable():

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

如果我们在第一次从Observable.create() emmit 后立即调用onComplete() 和使用Observable.fromCallable() 有什么不同吗?如果有,pros/cons是什么?

Observable.create 让我们发射多个项目,而 fromCallable 只发射一个项目。

您应该使用后者,因为它更能表达具有单个元素序列的意图并且开销略低。

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