背景:在先前的Android应用程序,我已经开发了,我用了一个事件总线(奥托通过广场)来处理异步任务结果(例如:一台服务器请求的结果公布在总线和应用程序中的某个地方拦截了该响应)。虽然它完成了这项工作,但在我读过的一篇文章中提到,使用这样的总线是一个坏主意,因为它被认为是反模式。Android的事件总线替代
这是为什么?在处理异步操作的结果时,使用事件总线有哪些替代方法?我知道大多数情况下,没有标准的方法来处理事情,但有没有“更加规范”的方法?
背景:在先前的Android应用程序,我已经开发了,我用了一个事件总线(奥托通过广场)来处理异步任务结果(例如:一台服务器请求的结果公布在总线和应用程序中的某个地方拦截了该响应)。虽然它完成了这项工作,但在我读过的一篇文章中提到,使用这样的总线是一个坏主意,因为它被认为是反模式。Android的事件总线替代
这是为什么?在处理异步操作的结果时,使用事件总线有哪些替代方法?我知道大多数情况下,没有标准的方法来处理事情,但有没有“更加规范”的方法?
使用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
}
});
这是太酷了!它完全适合我的需求,因为我已经在使用Retrofit!谢谢! –
RxJava - https://github.com/ReactiveX/RxJava – skywall