Android 事件总线替代方案
Android Event Bus Alternative
上下文:在我之前开发的 Android 应用程序中,我使用了 事件总线 (otto by Square)处理异步任务结果(例如:服务器请求的结果发布在总线上,我在应用程序的某处拦截该响应)。虽然它完成了工作,但在我读到的一些文章中提到使用这样的总线是一个坏主意,因为它被认为是一种 反模式 。
为什么会这样?在处理异步操作的结果时,使用事件总线有哪些替代方案?我知道,大多数时候,没有标准的方法来处理事情,但是有"a more canonical"方法吗?
使用 RxJava
和 Retrofit
进行异步网络调用。 RxJava
为 Retrofit
提供开箱即用的支持。
Return Observable
来自改装界面。
@GET("/posts/{id}")
public Observable<Post> getData(@Path("id") int postId);
在您的 activity class -
中使用它
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
}
});
上下文:在我之前开发的 Android 应用程序中,我使用了 事件总线 (otto by Square)处理异步任务结果(例如:服务器请求的结果发布在总线上,我在应用程序的某处拦截该响应)。虽然它完成了工作,但在我读到的一些文章中提到使用这样的总线是一个坏主意,因为它被认为是一种 反模式 。
为什么会这样?在处理异步操作的结果时,使用事件总线有哪些替代方案?我知道,大多数时候,没有标准的方法来处理事情,但是有"a more canonical"方法吗?
使用 RxJava
和 Retrofit
进行异步网络调用。 RxJava
为 Retrofit
提供开箱即用的支持。
Return Observable
来自改装界面。
@GET("/posts/{id}")
public Observable<Post> getData(@Path("id") int postId);
在您的 activity class -
中使用它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
}
});