背景:在先前的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