其他分享
首页 > 其他分享> > Android Event Bus Alternative

Android Event Bus Alternative

作者:互联网

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

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

解决方法:

使用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 one rror(Throwable e) {

  }

  @Override
  public void onNext(List < Data > data) {
  // Display data
  }
 });

标签:otto,android,android-asynctask
来源: https://codeday.me/bug/20190824/1706157.html