基于Kotlin解決Android中Handler內(nèi)存泄漏問題

作為Android開發(fā)者昨凡,我們都知道澳窑,當(dāng)我們在子線程處理完耗時任務(wù)后刷新UI時作谭,一般會借助于 `Handler` 來實現(xiàn)鳄虱。關(guān)于handler具體用法這里不做說明了办成,在使用 `Handler` 時一般會遇到內(nèi)存泄漏的隱患赦政,同時編譯器也會給出一大片黃色的警告,在兩者驅(qū)使下泳叠,我們勢必要對其暴露的問題進行合理解決冗美。

? 關(guān)于Handler內(nèi)存泄漏原因的詳細分析可以參考該文章:http://www.reibang.com/p/f2f186e3dd3e

這里我們主要來看一下在kotlin語言下如何處理handler內(nèi)存泄漏問題析二。一般地,我們都會借助于靜態(tài)內(nèi)部類與弱引用來處理這類問題节预,kotlin中也不例外叶摄,這里以在fragment中為例,來看看實現(xiàn)代碼吧:

private var handler: Handler = WithoutLeakHandler(this)

companion object {
        const val GET_LOCAL_VIDEOS: Int = 100
        /**
         * by moosphon on 2018/09/16
         * desc: 解決handler內(nèi)存泄漏的問題安拟,消息的處理需要放在內(nèi)部類的{@link #Handler.handleMessage}
         */
        private class WithoutLeakHandler( fragment: VideoLocalFragment) : Handler(){
            private var mFragment: WeakReference<VideoLocalFragment> = WeakReference(fragment)

            override fun handleMessage(msg: Message) {
                super.handleMessage(msg)
                when(msg.what){
                    GET_LOCAL_VIDEOS -> {
                        val fragment = mFragment.get()

                        Log.e("VideoLocalFragment", "收到視頻搜索完畢的消息了")
                        if (fragment != null){
                            fragment.adapter.setData(fragment.videoData!!)
                            fragment.fm_video_local_rv.adapter = fragment.adapter
                        }

                    }
                }
            }
        }
    }
    
    ......
    
     Thread(Runnable {
            videoData = MediaUtils.getLocalVideos(context)
            Log.e("VideoLocalFragment", "掃描本地視頻的數(shù)量為->"+videoData?.size)
            val message= Message()
            message.what = GET_LOCAL_VIDEOS
            handler.sendMessage(message)
        }).start()
    

在kotlin中蛤吓,我們需要在靜態(tài)類 WithoutLeakHandler 中重寫 handleMessage 方法,并在里面處理消息和刷新UI糠赦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末会傲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拙泽,更是在濱河造成了極大的恐慌淌山,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顾瞻,死亡現(xiàn)場離奇詭異泼疑,居然都是意外死亡,警方通過查閱死者的電腦和手機荷荤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門退渗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蕴纳,你說我怎么就攤上這事会油。” “怎么了古毛?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵翻翩,是天一觀的道長。 經(jīng)常有香客問我,道長体斩,這世上最難降的妖魔是什么梭稚? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮絮吵,結(jié)果婚禮上弧烤,老公的妹妹穿的比我還像新娘。我一直安慰自己蹬敲,他們只是感情好暇昂,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伴嗡,像睡著了一般急波。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘪校,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天澄暮,我揣著相機與錄音,去河邊找鬼阱扬。 笑死泣懊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的麻惶。 我是一名探鬼主播馍刮,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼窃蹋!你這毒婦竟也來了卡啰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤警没,失蹤者是張志新(化名)和其女友劉穎匈辱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惠奸,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡梅誓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了佛南。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梗掰。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嗅回,靈堂內(nèi)的尸體忽然破棺而出及穗,到底是詐尸還是另有隱情,我是刑警寧澤绵载,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布埂陆,位于F島的核電站苛白,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏焚虱。R本人自食惡果不足惜购裙,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鹃栽。 院中可真熱鬧躏率,春花似錦、人聲如沸民鼓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丰嘉。三九已至夯到,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間饮亏,已是汗流浹背耍贾。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留路幸,地道東北人逼争。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像劝赔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子胆敞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

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

  • 用兩張圖告訴你着帽,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 12,699評論 2 59
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,754評論 25 707
  • 【Android Handler 消息機制】 前言 在Android開發(fā)中移层,我們都知道不能在主線程中執(zhí)行耗時的任務(wù)...
    Rtia閱讀 4,812評論 1 28
  • DAY38:我與有書兩周年的故事 #遇見你观话,是最美麗的意外予借。# 昨天,“雙十二”频蛔,是有書兩周年的生日灵迫。祝有書兩周年...
    書香是佳閱讀 268評論 0 2
  • 六歲那年,他抓住了那只蟬晦溪,便以為轉(zhuǎn)抓了整個夏天瀑粥。 十六歲那年,他吻過她的臉三圆,便以為能和他到永遠狞换。 是不是一個人過久...
    胡里胡屠閱讀 117評論 0 0