? ? 我們?cè)陧?xiàng)目項(xiàng)目中使用Handler是為了更新ui,我們?cè)谥骶€程中創(chuàng)建Handler對(duì)象,在子線程中處理一些耗時(shí)操作,handler通過發(fā)送message或者post(runnable)的方式,讓主線程更新ui。
? ? 因?yàn)樽泳€程中是一個(gè)耗時(shí)操作,比如在訪問網(wǎng)絡(luò)請(qǐng)求的過程中,我把該Activity關(guān)閉了,但是這時(shí)候Handler仍然存有該該頁(yè)面的引用。這樣就導(dǎo)致該activity無法被回收,就會(huì)造成內(nèi)存泄漏。
解決方法之一就是把Handler改成持有該Activity的弱引用,并把類聲明為static,靜態(tài)類不持有外部類的對(duì)象,所以你的Activity可以隨意被回收
代碼如下:

我們進(jìn)入WeakReference的源碼,看看WeakReference的描述信息

翻譯過來也就是弱引用不會(huì)阻止引用對(duì)象被終止或是回收
還有我們?cè)贛VP的架構(gòu)項(xiàng)目中,在P成也會(huì)用到WeakReference,實(shí)例如下
