安卓日記Handler的內(nèi)存泄漏

Handler大家都在用,用來線程的通信,實現(xiàn)異步間的信息傳遞
handler有個小坑 不優(yōu)化的話 會引起內(nèi)存泄漏
要從handler機制說起,Android中UI線程也就是主線程建立時,會進(jìn)行一個Looper.prepare()的方法,每個looper對應(yīng)一個線程,這是一個類似輪詢器的玩意兒,這個東西會不停地去輪詢Messagequeue消息隊列,取出處于隊列頭部的消息,發(fā)送給相應(yīng)的線程
大體的一個機制就是這樣,然后問題就出在了消息隊列這一塊,handler發(fā)送消息,不是說發(fā)送一個就完事,要不然也就用不到消息隊列了,假設(shè)這樣一個情況,消息隊列中有五個消息,都是由子線程發(fā)送給主線程的,主線程在處理了兩個消息之后被用戶關(guān)閉了,這是很有可能的一個情況,activity關(guān)閉是關(guān)閉了 但是這個時候handler還持有著activaty的引用,這就會導(dǎo)致activity的內(nèi)存回收不了,出現(xiàn)內(nèi)存泄漏
具體優(yōu)化方法如下 簡單的加一個軟引用

 static class LoadDataHandler extends Handler {
        private SoftReference<MainActivity> activitySRF = null;

        public LoadDataHandler(MainActivity activity) {
            activitySRF = new SoftReference<>(activity);
        }

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            // 因為Handler是異步的排嫌,存在退出當(dāng)前類之后才接收到handler消息的情況畸裳,
            // 并且軟引用持有的對象會在堆內(nèi)存不足時存在被回收的可能,所以這里需要判空處理
            if (null == activitySRF || null == activitySRF.get()) {
                return;
            }
            switch (msg.what) {
                case 0: {
                    activitySRF.get().mUserNameTxt.setText("123");
                }
                break;
                default:break;
            }
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末淳地,一起剝皮案震驚了整個濱河市怖糊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌颇象,老刑警劉巖伍伤,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異遣钳,居然都是意外死亡扰魂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來劝评,“玉大人姐直,你說我怎么就攤上這事〗螅” “怎么了简肴?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長百侧。 經(jīng)常有香客問我,道長能扒,這世上最難降的妖魔是什么佣渴? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮初斑,結(jié)果婚禮上辛润,老公的妹妹穿的比我還像新娘。我一直安慰自己见秤,他們只是感情好砂竖,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鹃答,像睡著了一般乎澄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上测摔,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天置济,我揣著相機與錄音,去河邊找鬼锋八。 笑死浙于,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挟纱。 我是一名探鬼主播羞酗,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼紊服!你這毒婦竟也來了檀轨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤围苫,失蹤者是張志新(化名)和其女友劉穎裤园,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剂府,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡拧揽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淤袜。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡痒谴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出铡羡,到底是詐尸還是另有隱情积蔚,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布烦周,位于F島的核電站尽爆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏读慎。R本人自食惡果不足惜漱贱,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夭委。 院中可真熱鬧幅狮,春花似錦、人聲如沸株灸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽慌烧。三九已至逐抑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杏死,已是汗流浹背泵肄。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留淑翼,地道東北人腐巢。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像玄括,于是被迫代替她去往敵國和親冯丙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容