Rx java 谁负责在RxJava/RxAndroid、caller'中执行线程;s或被叫人';s

Rx java 谁负责在RxJava/RxAndroid、caller'中执行线程;s或被叫人';s,rx-java,rx-android,Rx Java,Rx Android,在RxJava/RxAndroid中,通常需要强制执行线程,尤其是在执行网络操作时,例如: Single.fromCallable(/*download*/) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) 在静态方法或方法中支持单个,以下哪一项更有意义: public static Single<File> download(URL url) {

在RxJava/RxAndroid中,通常需要强制执行线程,尤其是在执行网络操作时,例如:

Single.fromCallable(/*download*/)
      .subscribeOn(Schedulers.io())
      .observeOn(AndroidSchedulers.mainThread())
在静态方法或方法中支持单个,以下哪一项更有意义:

public static Single<File> download(URL url) {
      return Single.fromCallable(/*download*/);
}

public static Single<File> download(URL url) {
     return Single.fromCallable(/*download*/)
      .subscribeOn(Schedulers.io())
      .observeOn(AndroidSchedulers.mainThread())
}
公共静态单一下载(URL){
返回Single.fromCallable(/*下载*/);
}
公共静态单一下载(URL){
返回Single.fromCallable(/*下载*/)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
}

基本上,谁的职责是执行线程,调用方的还是被调用方的以及为什么?

只处理源的订阅部分更有意义。如果线程根本不重要,也可以跳过它。否则,你就知道这个地方对螺纹的要求了

public static Single<File> download(URL url) {
     return Single.fromCallable(/*download*/)
      .subscribeOn(Schedulers.io());
}
您还可以使用该方法定义它,或者使用其他命名约定,如
downloadOnIo

public static Single<File> download(URL url, Scheduler subscribeOn) {
     return Single.fromCallable(/*download*/)
      .subscribeOn(subscribeOn);
}
公共静态单次下载(URL、调度程序订阅){
返回Single.fromCallable(/*下载*/)
.subscribeOn(subscribeOn);
}

这取决于您的习惯。您可以评论它将在IO线程上运行的方法,或者直接将其名称更改为
downloadOnIO
。我同意您的看法,我开始在我的项目中意识到这一点。
public static Single<File> download(URL url, Scheduler subscribeOn) {
     return Single.fromCallable(/*download*/)
      .subscribeOn(subscribeOn);
}