Обычно вы заметите разницу, когда излучаемая вами вещь - это не просто объект, а фактически результат некоторых вызовов методов, которые включают в себя либо тяжелые вычисления, ввод-вывод, либо состояние.
Single.just(x)
немедленно оценивает x
в текущем потоке, а затем вы получаете то, что было результатом x
для всех подписчиков.
Single.fromCallable(y)
вызываетy
вызывается в планировщике subscribeOn
во время подписки и отдельно для каждого подписчика.
Так, например, если вы хотите перенести операцию ввода-вывода в фоновый поток, выбудет использовать
Single.fromCallable(() -> someIoOperation()).
subscribeOn(Schedulers.io()).
observeOn(AndroidSchedulers.mainThread()).
subscribe(value -> updateUi(value), error -> handleError(error));
Наличие Single.just()
здесь не будет работать, поскольку someIoOperation()
будет выполнено в текущем потоке.