我正在构建一个Android应用程序(实际上是我的第一个应用程序),它是关于获取与您搜索的类似的跟踪。我正在使用rofJava和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获取我的信息。 提前感谢您的回复。
答案 0 :(得分:0)
您的代码很好,您可以做的一件事是您可以将代码分成多个函数而不是单个函数,并将它们作为单独的线程运行。
一个函数使api调用搜索类似的轨道和其他来获取图像并信任我,这显着改善了响应。希望它有所帮助..