我還是搞清楚RxJava,並用它做與改造2.一些網絡的東西一直試圖就我們對AA幾天,喜歡的代碼看起來更具可讀性,但現在所遇到的一個我似乎無法解決的問題。RxJava重新訂閱事件活動後恢復
我試圖執行登錄(它返回一個API令牌),然後使用該令牌都在同一個鏈中獲取一些初始數據使得鏈條的輸出爲所述令牌+數據。要做到這一點,我打電話給我的API服務與
apiClient
.login()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(token -> getData(token))
.subscribe(new Subscrber<Bundle>() {...});
這似乎很好,但我也想在啓動和停止時鏈條,以顯示進度條。所以我爲此添加了.doOnSubscribe()
和.doOnUnsubscribe()
。不過,我注意到在方向更改後,我試圖隱藏進度欄的片段始終爲空。
因此,我搜索並遇到了RxLifecycle庫,似乎它會幫助和我現在.cache()
和取消訂閱事件鏈。但是我不知道如何在onCreate()
之後再次訂閱相同的活動?我想我錯過了一些非常基本的東西,並希望得到任何幫助。
你能做的最好的事情我分開你的邏輯和實現'MVP'模式。在此之後,'Presenter'類(理想情況下應該是每個視圖實例的單例)將處理所有聯網並在屏幕旋轉後保持視圖重建。實際上,有一個很漂亮的庫允許使用基於rxJava的'MVP'模式https://github.com/konmik/nucleus(它非常小)。即使你不想使用它,你可以得到一個想法,它是如何實現的 – Than
嗯..好了,所以我想我需要纔去下來RxJava航線上良好的MVP執行讀了,以及... –
'MVP'可以使代碼更cleanier,將解決這個問題,但也許它不是你要找的(這不是那麼容易整個應用程序架構切換到MVP)解決方案(這就是爲什麼我沒有張貼它作爲回答)。我相信你有一種方法可以在不使用MVP的情況下使用任何第三方庫或一些很好的模式,但我沒有任何干淨的解決方案。把我上面的評論當作「別人如何處理類似問題」。 – Than