【发布时间】:2017-12-14 15:30:47
【问题描述】:
我正在构建一个 Android 应用(实际上是我的第一个应用),它的目的是获取与您搜索的相似的曲目。我正在使用带有 rxJava 和 gson 的 retrofit2 进行通话。 对于我发现的每首曲目,我都会在图像视图中添加响应提供的相应图像,但该图像不是实际的专辑图像,它只是乐队的图像。如果我进行专辑搜索,我想获得可以从 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);
}
})
);
}
P.S 我正在使用 lastFM api 获取我的信息。 提前感谢您的任何回复。
【问题讨论】:
标签: java android concurrency retrofit2 gson