我剛剛看了源碼箫柳,Handler只有在發(fā)送延遲消息才會(huì)導(dǎo)致內(nèi)存泄露淹辞,泄露的原因是因?yàn)橛昧薓ainLooper净赴,這個(gè)looper在整個(gè)程序的生命周期都存在粘昨,內(nèi)部的MessageQueue持有了延遲發(fā)送的Message较锡,Message持有了Handler導(dǎo)致Activity無法回收圆恤。
我百度了Handler內(nèi)存泄露赤兴,為啥大家的解決方案都是static+弱引用音比?退出Activity前removeMessage不就完事了俭尖,搞這么復(fù)雜干啥?
Handler內(nèi)存泄露及解決方案引子 在Java中非靜態(tài)內(nèi)部類或者匿名內(nèi)部類都是默認(rèn)持有外部類的引用的洞翩,這兩個(gè)內(nèi)部類的存在是依賴于外部類的對(duì)象的稽犁。比如如下例子: 上面的out.new InnerClass(...