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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With