Este tutorial fue evaluado por especialistas para que tengas la garantía de la veracidad de esta reseña.
Solución:
Por lo general, notará la diferencia cuando lo que está emitiendo no es solo un objeto, sino el resultado de algunas llamadas a métodos que involucran cálculos pesados, E/S o estado.
Single.just(x)
evalúa el x
inmediatamente en el hilo actual y luego te quedas con lo que fue el resultado de x
para todos los suscriptores.
Single.fromCallable(y)
invoca el y
invocable en el subscribeOn
programador en el momento de la suscripción y por separado para cada suscriptor.
Entonces, por ejemplo, si quisiera descargar una operación de E/S a un subproceso en segundo plano, usaría
Single.fromCallable(() -> someIoOperation()).
subscribeOn(Schedulers.io()).
observeOn(AndroidSchedulers.mainThread()).
subscribe(value -> updateUi(value), error -> handleError(error));
Tener Single.just()
aquí no funcionaría desde someIoOperation()
se ejecutaría en el subproceso actual.
En el caso de uso que ha mencionado, en realidad no hay una gran diferencia.
Ahora imagine que necesitamos que el objeto se cree dinámicamente a través de una llamada de función.
fun getTimeObject()
val timeInMillis = System.currentTimeMillis()
return TimeObject(timeInMillis)
Entonces con, Single.just(getTimeObject())
la resultante Single
emitirá lo mismo Long
cuando tiene un nuevo suscriptor.
Sin embargo, con Single.fromcallable(()-> getTimeObject())
la resultante Single
emitirá una diferente Long
indicando la hora actual en milis cuando tiene un nuevo suscriptor.
Eso es porque fromCallable
ejecuta su lambda cada vez que tiene un nuevo suscriptor Perezosamente.
Deberías usar desde invocable () cuando tienes una función como
MyObject myFunction()
// some login here
return new MyObject();
Entonces puedes crear Único de esta función así:
Single.fromCallable(() -> myFunction());
Single.just(miObjeto) simplemente emite su objeto sin ninguna lógica.
Así que no hay necesidad de usar desde invocable () cuando desee emitir un elemento específico.
Te mostramos reseñas y calificaciones
Recuerda recomendar esta división si te fue de ayuda.