MVP Memory leak
重拾Andorid 開發工作, 剛接觸MVP, 寫的心慌慌, 功能急著上線, 一邊寫功能一邊很怕遇到以下
Problems?
1. Memory leak
2. Null point exception
Why ?
Presenter 負責處理邏輯, 特別是浩時的網路請求...
萬一在還在數據請求還沒回來, activity or fragment 被銷毀了..
而Presenter ㄧ直持有Activity or fragment的物件......這時候會
因持有強強der引用, 導致Activity / fragment 無法被釋放GC掉 = > Memorry leak
How?
1. BasePresenter : WeakReference view 用以減少memory leak 的可能性
2. onDestroy 時, call BasePresenter detachView to release view reference
But!!
以上兩種不能保證... 何時會被系統回收資源...也不一定保證Actity 就會跑到onDestroy()
可能在系統急切需要Memory時, 回收invisible views, 就不一定保證會跑到 onDestroy()
這時候, 耗時數據回來了....然後 presenter 操作view, view被回收了... = > NullPointException
保險起見.....
So~
建議是在 對view操作前, 先判斷 view 為空 do nothing...
以上總結查找了一些資料Reference:
https://juejin.im/entry/58b39f01b123db0052d1764c
https://blog.csdn.net/qq137722697/article/details/78275882