Android事件总线替代方案

时间:2016-02-08 08:40:41

标签: android android-asynctask otto

背景信息:在我之前开发的Android应用程序中,我使用事件总线(Square的 otto )来处理异步任务结果(例如:结果服务器请求发布在总线上,在应用程序的某个地方我拦截了响应)。虽然它完成了这项工作,但在我读过的一篇文章中提到,使用这种总线是一个糟糕的主意,因为它被认为是反模式

为什么会这样?在处理异步操作的结果时,使用事件总线有哪些替代方法?我知道,在大多数情况下,没有标准的方法来处理事情,但是有更多的规范"方法?

1 个答案:

答案 0 :(得分:6)

使用RxJavaRetrofit进行异步网络呼叫。 RxJavaRetrofit提供了现成的支持。

从改装界面返回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
  }
 });