美文网首页
为什么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