Альтернатива 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
}
});