handler内存泄露

长生命周期引用短生命周期对象,gc来时短生命周期对象gc不可达。

mainthread 持有mainlooper持有msgqueue持有msg持有handlet持有activity。

1.gc来时msgqueue没处理完。mainthread生命周期大于activity


2.activity 持有耗时leakthread  持有handler持有activity。如果leakthread生命周期大于activity,产生泄露。

静态的handler持有弱引用activity

如果没有耗时线程也可以清空主线程关于handler的msg

退出时也可以停掉耗时线程。

5leakthread不要匿名初始化,通过handler通信

你可能感兴趣的:(handler内存泄露)