我面對一個AsyncSubject
一個NetworkOnMainThreadException
,甚至當我在返回Observable
應用調度。 爲什麼我們需要在Subject
上應用Schedulers
?NetworkOnMainThread使用AsyncSubject RxJava Android中
我錯過了在的javadocs中的這個解釋,爲什麼Subject
如果我們不構成它的主線程?有人可以指出一個文件解釋這個?
下面的代碼示例說明了這種情況。
這是用例:
/*** Makes a network call to retrieve a search result, it returns an Observable<SearchResult> */
private Observable<SearchResult> call(String searchQuery){
return mSearchWebService.call(searchQuery);
}
/* Same code but with a a NetworkOnMainThreadException */
private Observable<SearchResult> call(String searchQuery){
final Subject<SearchResult, SearchResult> subject = AsyncSubject.create();
mSearchWebService.call(「let me google something」)
.subscribe(subject::onNext, subject::onError, subject::onCompleted);
// When we apply the schedulers in the subject, it works fine, but why it doesn’t apply the schedulers of the observables?
// This works: mSearchWebService.call(「let me google something」)
// .compose(mBackgroundThreadTransformer.applySchedulers())
// .subscribe(subject::onNext, subject::onError, subject::onCompleted);
return subject;
}
這是演示代碼:
private void onSearchButtonClicked(){
searchUseCase.call(「let me google something」).compose(mBackgroundThreadTransformer.applySchedulers())
.subscribe(searchResult -> show(searchResult),
e -> Timber.d(e, "Failed to search」)));
}