长生命周期引用短生命周期对象,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通信
网友评论