改造调用的响应太慢,它 returns 是一个空列表

The response from the retrofit call is too slow and it returns a null list

在 onResponse() 中获取 null 响应。如何提高响应时长?

public class RequestClass {

private static final String TAG = RequestClass.class.getSimpleName();
private final static String API_KEY = "apikey";
static ApiInterface apiService =
        ApiClient.getClient().create(ApiInterface.class);

static public List<Movie> getTopMovies(String page) {
    final List<Movie> lowDetailMovies = new ArrayList<Movie>();
    Call<MoviesResponse> call = apiService.getTopRatedMovies(API_KEY, page);
    call.enqueue(new Callback<MoviesResponse>() {
        @Override
        public void onResponse(Call<MoviesResponse> call, Response<MoviesResponse> response) {
            List<DBMovie> movies = response.body().getResults();

            for (DBMovie movie : movies) {
                String[] genres = new String[6];
                int i = 0;
                for (int gen : movie.getGenreIds())
                    genres[i++] = gen + "";
                lowDetailMovies.add(new Movie(movie.getId(), Double.toString(movie.getVote_average()), movie.getTitle(), movie.getTitle(), movie.getPoster_path(), movie.getOriginal_language(),
                        movie.getOriginal_title(), genres, movie.getOverview(), movie.getRelease_date(), false, false));
            }
        }

        @Override
        public void onFailure(Call<MoviesResponse> call, Throwable t) {
            Log.e(TAG, t.toString());
        }
    });


    return lowDetailMovies;
}


}

任何人都可以帮助我解决在 onResponse 方法之后获取列表的问题。 onResponse 方法的持续时间约为 400 毫秒。 这是我需要列表的代码部分:

@OnClick(R.id.popular_button)
public void showPopularMovies(View view) {
    List<Movie> movies;

    movies = RequestClass.getTopMovies("1");

    Intent intent = new Intent(MainActivity.this, VODActivity.class);
    Collections.sort(movies, Util.compareByPopularityAscending);

    Bundle bundle = new Bundle();
    bundle.putSerializable(Constants.bundleMovieKey, (Serializable) movies);
    bundle.putString(Constants.bundleVodActivityTitle, Constants.PopularMoviesTitle);
    intent.putExtras(bundle);

    startActivity(intent);
}

谢谢。

我用 ReactiveX 解决了这个问题。另一个解决方案是从 onResponse() 方法回调。

    ApiInterface apiService = ApiClient.getClient().create(ApiInterface.class);
    apiService.getTopRatedMovies(Constants.API_KEY, Constants.FIRST_PAGE)
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(popularMoviesSubscriber);