生命周期:因為Presenter是View創建的,我們需要確保完全地理解View的生命周期,特別是因為它將最有可能去處理狀態更新和非同步數據。舉個例子,每一個Presenter應該在View destroyed的情況下有一個取消非同步任務的方式,或者應該在用戶暫停或者恢復視圖事件時重置到原始狀態等等。最 ...
-
生命周期:因為Presenter是View創建的,我們需要確保完全地理解View的生命周期,特別是因為它將最有可能去處理狀態更新和非同步數據。舉個例子,每一個Presenter應該在View destroyed的情況下有一個取消非同步任務的方式,或者應該在用戶暫停或者恢復視圖事件時重置到原始狀態等等。最後但同樣重要的是,當View已經被銷毀,試圖從Presenter去更新View元素,始終需要註意可怕的NPEs。
-
保持Views儘可能地愚蠢:我們的Views應該不再包含任何業務相關的邏輯。它應該只包含Android框架inflate和設置View的這些最低限度的東西。任何用戶交互應該派發到Presenter。根據經驗,如果你的views有任何其它方法去更新UI元素或者響應用戶觸發的事件,那麼你可能應該去檢查它們的實現。
-
保持Presenter儘可能地純粹:這一點,我們的意思時你應該儘可能地避免有Android相關的代碼在你的presenters中。為這些組件編寫純粹的單元測試,而不需要使用其它如Robolectric等測試框架,這明顯地得到了簡化。這明顯說起來比做起來容易得多,因為你終歸會在某些地方遇到這種情況,舉個例子,你將需要有一個Context的引用用來比如數據載入、訪問strings文件等等。