2016-02-08 70 views
3

背景:在先前的Android應用程序,我已經開發了,我用了一個事件總線奧托通過廣場)來處理異步任務結果(例如:一臺服務器請求的結果公佈在總線和應用程序中的某個地方攔截了該響應)。雖然它完成了這項工作,但在我讀過的一篇文章中提到,使用這樣的總線是一個壞主意,因爲它被認爲是反模式Android的事件總線替代

這是爲什麼?在處理異步操作的結果時,使用事件總線有哪些替代方法?我知道大多數情況下,沒有標準的方法來處理事情,但有沒有「更加規範」的方法?

+1

RxJava - https://github.com/ReactiveX/RxJava – skywall

回答

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 
    } 
}); 
+0

這是太酷了!它完全適合我的需求,因爲我已經在使用Retrofit!謝謝! –