RxJava concatMap нет ответа

Надеюсь, у вас, ребята, все хорошо, я работаю над личным проектом Android, используя RxJava и Retrofit. Это поисковый запрос для проблем GitHub, я получаю информацию от пользователя, когда он нажимает кнопку поиска и использует PublishSubject объект для выдачи поискового текста.

button.setOnClickListener(view -> {
    publishSubject.onNext(editText.getText().toString());
});

и я сопоставляю это излучение с Observable используя модернизацию, как это

publishSubject.concatMap(dataModel::getIssues)
              .subscribeOn(Schedulers.computation())
              .observeOn(AndroidSchedulers.mainThread())
              .subscribe(this::loadData, this::onError);

public Observable<List<Issue>> getIssues(String queryText) {
    String[] query_params = queryText.split("/");
    return gitHubApiService.getIssues(query_params[0], query_params[1], "open");
}

В результате я ожидаю List из Issues

public void loadData(List<Issue> issues) {
    mProgressDialog.setVisibility(View.INVISIBLE);

    if( issues.size() == 0) {
        noIssueText.setVisibility(View.VISIBLE);
    } else {
        mRecyclerView.setVisibility(View.VISIBLE);
        mIssuesList.clear();
        mIssuesList.addAll(issues);
        mAdapter.notifyDataSetChanged();
    }
}

Но мой код, похоже, имеет некоторую проблему с реализацией, поскольку он никогда не выдает ничего из сети, даже при ошибке не вызывается. Я проверил тот же пример с Observable Я получаю от Retrofit API, поэтому нет ошибки дооснащения, и поэтому я думаю, что есть некоторые проблемы с моим concatMap логика. Любая помощь будет высоко ценится

1 ответ

Решение

При первом разборе я думаю, что вы можете делать сетевой вызов в главном потоке. Вы пробовали следующее?

public Observable<List<Issue>> getIssues(String queryText) {
  String[] query_params = queryText.split("/");
  return gitHubApiService.getIssues(query_params[0], query_params[1], "open")
       .subscribeOn(Schedulers.io());
}

Вещь твоя onClickListener обратный вызов выполняется в главном потоке, и в наблюдаемом конвейере нет другого переключателя контекста.

Другие вопросы по тегам