目前我正在使用RxJava和RxBinding一起觀察視圖更改的項目。它的工作真的很好的片段和活動,我們很容易接觸到生命週期事件 - 因爲它的建議,我們綁定到數據流上onResume
和取消綁定的。使用事件總線傳遞RxJava訂閱
最近我們介紹了RecyclerView,它顯示視圖列表,它們都可以是我們想要訂閱的數據流。我面臨的問題是將活動/片段中的CompositeSubscription對象通過適配器向下傳遞,以在創建時查看持有者。當然,它不起作用當用戶離開屏幕並返回時,不會重新創建ViewHolders(調用和onResume
)。
解決方案是讓適配器,佈局管理器(以訪問現有的視圖持有者)生命週期感知,但它需要我們編寫額外的代碼來在邏輯層之間傳遞這些訂閱參考。
但是我的一位同事提議使用事件總線,它將用於將事件中的訂閱傳遞給活動/片段,並將它們添加到CompositeSubscription中,並且所有這些將一起取消訂閱。此外,我們可以通知查看持有者在用戶返回時自行下訂單。
您對這種方法有什麼看法?在這種方法中我應該注意哪些缺陷?
通過「視圖顯示列表和所有的人都可以是數據流,我們想訂閱」我的意思觀點持有者更復雜一點,然後只是簡單的點擊美景 - 他們可以是如編輯文本視圖。而且我提出不違反任何你所提到的點 - 訂閱將事件傳遞從ViewHolder到活動/片段,所以它不會是生命週期知道,我們不會通過訂閱適配器 - 適配器將不會了解這些訂閱。 –
而BTW對我們有什麼,我認爲RxJava是最好的解決方案 - 多種數據源(視持有人)發出一個需要進行組合和節流數據 - RxJava可以輕鬆處理。 –