zoukankan      html  css  js  c++  java
  • 注册LiveData或者MutableLiveData的观察者导致的内存泄露问题

    问题描述

      当你在一些主页Activity里注册LiveData的观察者时,有可能是在onStart或者onResume生命周期里注册它。这个时候就有可能导致内存泄露。

    问题原因

      其实在正常情况下onStart或者onResume生命周期里注册观察者Observer也没问题。但是如果你的主页如果是不需要退出,就不会走onDestroy生命周期(特别是在一些Android物联设备上,本身主页就是桌面,且无法退出)。这个时候就会出现在其他Activity返回后在onStart或者onResume生命周期里反复注册观察者Observer。

    现在抓取内存泄露时候可以看到多个内部类(就是Observer类)不会被移除。这是因为LiveData的观察者在Activity或者Fragment里不需要手动去注销,但是也是需要在onDestroy执行时候才会注销的。

    解决办法

      请将它放到onCreate生命周期里注册Observer,防止反复注册。

  • 相关阅读:
    List
    美团Leaf分布式ID生成策略
    单点登陆
    ElasticSearch
    Eureka
    Nginx
    UML
    Computer English
    加密
    Excel中把一列数据转换成逗号隔开的一行
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/14006335.html
Copyright © 2011-2022 走看看