Android RxJava订阅的返回类型错误
我刚从RxJava和RxAndroid开始,一直在努力。我在最后一部分中遇到了问题,我订阅了这个代码Android RxJava订阅的返回类型错误,android,rx-java,rx-java2,rx-android,Android,Rx Java,Rx Java2,Rx Android,我刚从RxJava和RxAndroid开始,一直在努力。我在最后一部分中遇到了问题,我订阅了这个代码 subscription = GithubClient.getInstance() .getStarredRepositories(userName) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .s
subscription = GithubClient.getInstance()
.getStarredRepositories(userName)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<GithubRepo>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(List<GithubRepo> githubRepos) {
githubRepoAdapter.setGithubRepos(githubRepos);
}
});
import io.reactivex.android.schedulers.AndroidSchedulers;
import rx.Observer;
import rx.Subscription;
import rx.schedulers.Schedulers;
我也试过这些:
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import rx.Subscription;
但观察者必须实施不同的方法:
subscription = GithubClient.getInstance()
.getStarredRepositories(userName)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<GithubRepo>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(List<GithubRepo> githubRepos) {
githubRepoAdapter.setGithubRepos(githubRepos);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
检查一个。这是一个工作项目,但有点复杂。您不需要使用第二个请求,只需使用第一个请求即可
val allRepositories =
gitHubApi.getAllPublicRepositories().map {
// taken sublist because GitHub has a restriction up to 60 calls rate limit per hour.
it.subList(0, 5)
}.doOnError {
Log.e(TAG, "Exception: ", it)
}.subscribeOn(Schedulers.io())
并根据需要进行其他修改
GitHub限制每小时最多60次通话
也许您应该在使用链接RxJava-1的示例时检查它。但在您的导入中,RxJava-2已导入=) 在第二个RX subscribe方法更改后,现在它返回void
尝试使用subscribeWith()而不是subscribe(),或者调用subscribe()作为无效函数第一个代码示例中的问题是什么?然后我得到错误“无法解决方法subscribe(匿名rx.Observer…)。好的,谢谢!subscribeWith()返回一个观察者,因此也无法工作。调用subscribe()到底是什么意思作为一个void函数?我是RxJava的完全初学者。另外,哪些是正确的导入?谢谢!我建议您可以调用
GithubClient.getInstance()…subscribe()
notsubscription=GithubClient.getInstance()…subscribe()
接收操作的结果将是相同的。您需要订阅的唯一原因是以后取消订阅,例如,您在“活动”上启动“订阅”的长时间运行操作,但几分钟后用户离开“活动”。在这种情况下,订阅允许您取消订阅并节省资源。接收是一个复杂的主题。以看看这些链接
val allRepositories =
gitHubApi.getAllPublicRepositories().map {
// taken sublist because GitHub has a restriction up to 60 calls rate limit per hour.
it.subList(0, 5)
}.doOnError {
Log.e(TAG, "Exception: ", it)
}.subscribeOn(Schedulers.io())