Альтернатива Android Event Bus

Контекст: в предыдущем приложении для Android, которое я разработал, я использовал шину событий (otto by Square) для обработки результатов асинхронной задачи (например: результат запроса к серверу отправляется на шину, и где-то в приложении я перехватываю этот ответ). Хотя это и сделало свою работу, в какой-то статье, которую я читал, упоминалось, что использование такой шины - довольно плохая идея, так как считается антипаттерном.

Почему это так? Какие есть альтернативы использованию шины событий при работе с результатами асинхронных операций? Я знаю, что в большинстве случаев не существует стандартного способа обработки вещей, но есть ли "более канонический" метод?

1 ответ

Решение

Использование RxJava а также Retrofit для асинхронных сетевых вызовов. RxJava обеспечить готовую поддержку для Retrofit,

Вернуть Observable от дооснащения интерфейса.

@GET("/posts/{id}")
public Observable<Post> getData(@Path("id") int postId);

Используйте это в своем классе деятельности -

retrofitBuilderClass.getApi()
 .getData()
 .subscribeOn(Schedulers.newThread())
 .observeOn(AndroidSchedulers.mainThread())
 .subscribe(new Observer < List < Data >> () {
  @Override
  public void onCompleted() {

  }

  @Override
  public void onError(Throwable e) {

  }

  @Override
  public void onNext(List < Data > data) {
  // Display data
  }
 });
Другие вопросы по тегам