【问题标题】:How can i make parallel or concurent API calls?如何进行并行或并发 API 调用?
【发布时间】: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


    【解决方案1】:

    您的代码很好,您可以做的一件事是您可以将代码分割成多个函数而不是单个函数并将它们作为单独的线程运行。

    一个函数调用 api 来搜索相似的曲目和其他获取图像并相信我会显着改善响应。希望对你有帮助。。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-06
      • 2014-08-26
      • 1970-01-01
      • 2019-01-17
      • 2014-08-06
      • 2021-09-20
      • 2021-05-01
      • 1970-01-01
      相关资源
      最近更新 更多