2017-12-14 54 views
0

Android 앱 (실제로는 첫 번째 앱)을 제작 중이며 검색 한 것과 유사한 트랙이 표시됩니다. 내 호출에 대해 rxJava 및 gson과 함께 retrofit2를 사용하고 있습니다. 각 트랙마다 이미지 뷰에서 응답으로 제공된 해당 이미지를 추가했지만 실제 이미지가 아니므로 밴드의 이미지 일뿐입니다. 앨범 검색을 할 경우 API에서 얻을 수있는 앨범 이미지를 갖고 싶습니다.어떻게 병렬 또는 동시 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

코드가 좋다는 것은 코드를 하나의 함수가 아닌 여러 함수로 나눠서 별도의 스레드로 실행할 수 있다는 것입니다.

api가 유사한 트랙을 검색하고 이미지를 가져 와서 나를 신뢰함으로써 응답을 크게 향상시키는 하나의 함수가 있습니다. 희망은 ..