[英]How can i make parallel or concurent API calls?
我正在構建一個Android應用程序(實際上是我的第一個應用程序),它的目的是獲得與您搜索的曲目相似的曲目。 我正在使用帶有rxJava和gson的retrofit2進行通話。 對於找到的每個曲目,我都會在imageview中添加響應提供的相應圖像,但是該圖像不是實際的專輯圖像,它只是樂隊的圖像。 我想要一個相冊圖像,如果我進行相冊搜索,可以從API獲取。
因此,有沒有一種方法可以進行API調用,以返回每個曲目的專輯信息,而又不會浪費很多時間? 我希望這些調用彼此並行發生,以便對“用戶”(我)不可見。
這是我用來搜索類似曲目的代碼:
private void loadSimilarTracks() {
String mbid = selectedTrack.getMbid();
String artist = selectedTrack.getmArtist();
String track = selectedTrack.getName();
searchService = new LastFMSearchService();
Flowable<List<TrackSimilar>> fetchDataObservable = null;
if(!mbid.equals("")) {
fetchDataObservable = searchService.getSimilarTracks(mbid);
}
else{
fetchDataObservable = searchService.getSimilarTracks(artist, track);
}
mCompositeSubscription.add(fetchDataObservable
.timeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSubscriber<List<TrackSimilar>>() {
@Override
public void onNext(List<TrackSimilar> tracks) {
mTracks = tracks;
similarTrackAdapter.setTrackList(tracks);
}
@Override
public void onError(Throwable e) {
Toast.makeText(getActivity(), "API CALL ERROR", Toast.LENGTH_SHORT).show();
}
@Override
public void onComplete() {
resultsView.setVisibility(View.VISIBLE);
}
})
);
}
附言:我正在使用lastFM api作為我的信息。 預先感謝您的任何回復。
您的代碼很好,您可以做的一件事是,可以將代碼分成多個函數,而不是一個函數,然后將它們作為單獨的線程運行。
一個函數可以進行api調用以搜索相似的音軌,而另一個函數可以獲取圖像並信任我,從而可以顯着改善響應。 希望能幫助到你..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.