美文网首页
为什么handler可能造成内存泄露

为什么handler可能造成内存泄露

作者: 小马奔腾走天下 | 来源:发表于2020-08-09 16:38 被阅读0次

    非静态内部类,持有外部类的引用;

    主要是因为 Message 持有 handler 的引用,handler持有activity的引用,导致GC无法回收activity。

    javap 反编译查看class文件字节码, 内部类 持有外部类引用,可以访问外部类private 的属性。

    外部类字节码反编译分析,属性会多出access$0  access$1 access$2 的构造方法,有多少个属性,就有多少个这样的方法。

    然后,内部类,反编译查看,也多了对应访问的方法;

    Message 对象有个Handler target属性;

    msg.target.dispatchMessage(msg);

    App启动时,会创建一个Looper,无限制循环读取message。

    相关文章

      网友评论

          本文标题:为什么handler可能造成内存泄露

          本文链接:https://www.haomeiwen.com/subject/venldktx.html