Difference between Observable.create() and Observa

2019-04-28 09:33发布

Suppose we are getting a generic Object from SharedPrefs using .create():

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

and using .fromCallable():

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

Is there any Difference if we call onComplete() immediately after first emmit from Observable.create() and using Observable.fromCallable()? If so, what are the pros/cons?

1条回答
爷、活的狠高调
2楼-- · 2019-04-28 10:20

Observable.create let's you emit multiple items while fromCallable emits only a single item.

You should use the latter as it is more expressive about the intent of having a single element sequence and has a slighly lower overhead.

Drawback is that you can't have an async single element source with it whereas create let's you delay the call to onNext to a later point in time.

查看更多
登录 后发表回答