注冊LiveData或者MutableLiveData的觀察者導致的內存泄露問題


問題描述

  當你在一些主頁Activity里注冊LiveData的觀察者時,有可能是在onStart或者onResume生命周期里注冊它。這個時候就有可能導致內存泄露。

 

問題原因

  其實在正常情況下onStart或者onResume生命周期里注冊觀察者Observer也沒問題。但是如果你的主頁如果是不需要退出,就不會走onDestroy生命周期(特別是在一些Android物聯設備上,本身主頁就是桌面,且無法退出)。這個時候就會出現在其他Activity返回后在onStart或者onResume生命周期里反復注冊觀察者Observer。

 

現在抓取內存泄露時候可以看到多個內部類(就是Observer類)不會被移除。這是因為LiveData的觀察者在Activity或者Fragment里不需要手動去注銷,但是也是需要在onDestroy執行時候才會注銷的。

 

解決辦法

  請將它放到onCreate生命周期里注冊Observer,防止反復注冊。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM