java - 安卓 RxJava 2 : What is the difference between fromCallable and Just?

标签 java android rx-java

我一直在尝试在 Android 中使用 RxJava,但我试图找出 fromCallable 和 Just 之间的区别。两者都只接收一次数据,而 Create 可以多次接收数据。这是我用来试验的代码:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listenCallable();
        listenJust();
    }
    private void listenCallable() {
        CompositeDisposable compositeDisposable = new CompositeDisposable();
        Disposable disposable = Shooter.getCallable().subscribe(i -> {
            Log.d("Tag", "Listen Callable: " + i);
        });
        compositeDisposable.add(disposable);
        compositeDisposable.dispose();
    }

    private void listenJust() {
        CompositeDisposable compositeDisposable = new CompositeDisposable();
        Disposable disposable = Shooter.getJust("Jay").subscribe(i -> {
            Log.d("Tag", "Listen Just " + i);
        });
        compositeDisposable.add(disposable);
        compositeDisposable.dispose();
    }
}

和发出数据的类:

public class Shooter {
    public static Observable<String> getCallable() {
        return Observable.fromCallable(new Callable<String>() {
            @Override
            public String call() throws Exception {
                try {
                    Thread.sleep(500);
                } catch (Exception e) {}
                return "Callable Results";
            }
        });
    }

    public static Observable<String> getJust(String input) {
        try {
            Thread.sleep(500);
        } catch (Exception e) {}
        return Observable.just("Just Results " + input);
    }
}

最佳答案

Observable.fromCallable( 类似于

Observable.defer {
    try {
        Observable.just(...)
    } catch(e: Throwable) {
        Observable.error(e)
    }
}

因此,just 同步运行,而 fromCallable 可以通过 subscribeOn 延迟到另一个 Scheduler(并执行“稍后”)。

关于java - 安卓 RxJava 2 : What is the difference between fromCallable and Just?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52504124/

相关文章:

java - 字幕的正则表达式

java - 似乎有多个层次的多方性?

android - 如何使用 Mockito 或 MockK 模拟 android.util.Patterns

android - 为什么这个 observable 只发出一个值

java - 创建热可观察对象

java - Akka 是否有内置的解决方案来从广播路由器收集答案?

java - Gradle深度讲解中的build-by-convention是什么?

Android:如何处理 application/smil MIME 类型

android - 从源代码为 android 构建 libxml2 作为静态库

java - 关于Rxjava的一些概念: Observer pattern, and event