[發(fā)明專利]一種基于Android的Handler防內(nèi)存泄漏裝置及方法在審
| 申請?zhí)枺?/td> | 201610929424.5 | 申請日: | 2016-10-31 |
| 公開(公告)號: | CN106598725A | 公開(公告)日: | 2017-04-26 |
| 發(fā)明(設(shè)計(jì))人: | 張磊 | 申請(專利權(quán))人: | 武漢斗魚網(wǎng)絡(luò)科技有限公司 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50;G06F9/54 |
| 代理公司: | 湖北武漢永嘉專利代理有限公司42102 | 代理人: | 王丹,許美紅 |
| 地址: | 430073 湖北省武漢市東湖開*** | 國省代碼: | 湖北;42 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 android handler 內(nèi)存 泄漏 裝置 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明屬于Android系統(tǒng)安全領(lǐng)域,具體涉及一種基于Android的Handler防內(nèi)存泄漏裝置及方法。
背景技術(shù)
在Android軟件開發(fā)中或多或少會使用到多線程技術(shù),在使用多線程技術(shù)的時(shí)候就有一個(gè)問題點(diǎn)的引出,那就是子線程和主線程是如何進(jìn)行通信的。Android給我們提供了一個(gè)比較好用的工具Handler,通過Handler這個(gè)工具在子線程中發(fā)送消息給主線程,主線程接收到子線程的消息后,根據(jù)消息的不同類型會做不同的操作。
也就是說Handler主要是通過消息機(jī)制來使得主線程和子線程進(jìn)行通信。Handler這種消息機(jī)制確實(shí)解決了子線程和主線程通信的問題,但是卻又一個(gè)潛在的風(fēng)險(xiǎn),使用上稍不注意就有可能會造成內(nèi)存泄漏的風(fēng)險(xiǎn)。
內(nèi)存泄漏會給系統(tǒng)帶來什么問題呢。手機(jī)上內(nèi)存本身是屬于比較緊張的資源,內(nèi)存資源是有限的,內(nèi)存泄漏指的就是那些曾經(jīng)使用過,現(xiàn)在已經(jīng)沒有用了的資源,并沒有及時(shí)釋放掉該部分內(nèi)存,且該部分資源一直在內(nèi)存中存在,這塊區(qū)域既不能使用也不會被釋放。由于這塊內(nèi)存一直被占用且不能被及時(shí)釋放掉,所以導(dǎo)致其他情況下需要再次申請內(nèi)存的時(shí)候卻申請不到足夠的內(nèi)存空間就會出現(xiàn)系統(tǒng)卡頓,嚴(yán)重時(shí)候可能會出現(xiàn)應(yīng)用崩潰等后果。由此可見內(nèi)存泄漏給我們帶來了非常不好結(jié)果。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是:提供一種基于Android的Handler防內(nèi)存泄漏裝置及方法,在子線程和主線程正常通信的前提下避免內(nèi)存的泄漏。
本發(fā)明為解決上述技術(shù)問題所采取的技術(shù)方案為:一種基于Android的Handler防內(nèi)存泄漏裝置,其特征在于:它包括:
異步Runnable請求接收模塊,用于接收異步任務(wù)的Runnable請求;
同步模塊,用于采用弱引用方法同步保存所有接收到的異步任務(wù)的Runnable請求;
異步請求執(zhí)行模塊,用于執(zhí)行異步任務(wù)的Runnable請求,判斷是否有消息要發(fā)送;
子線線程執(zhí)行結(jié)束模塊,用于在沒有消息要發(fā)送時(shí),結(jié)束子線線程;
消息發(fā)送模塊,用于在有消息要發(fā)送時(shí),發(fā)送消息及消息與異步線程的弱引用關(guān)系;
消息分發(fā)模塊,用于存儲消息及消息與異步線程的弱引用關(guān)系,并按照消息的時(shí)間順序發(fā)送給主線程處理。
按上述裝置,所述的同步模塊中包含雙向鏈表,用于存儲所述的異步任務(wù)的Runnable請求。
按上述裝置,所述的同步模塊中還存儲有線程的優(yōu)先級,用于按照優(yōu)先級移出異步任務(wù)的Runnable請求。
按上述裝置,所述的同步模塊中包括有鎖模塊,用于實(shí)現(xiàn)同步保存;鎖模塊包括:
鎖獲取模塊,用于在接收到新的異步任務(wù)的Runnable請求時(shí),獲取鎖的所有權(quán);
操作模塊,用于在獲取到鎖的所有權(quán)時(shí)對所述的新的異步任務(wù)的Runnable請求進(jìn)行存儲或移出操作;
鎖釋放模塊,用于在存儲或移出操作完成時(shí),釋放鎖的所有權(quán)。
按上述裝置,所述的消息包括及時(shí)消息和延時(shí)消息;
所述的消息分發(fā)模塊中設(shè)有消息隊(duì)列和定時(shí)器;所述的定時(shí)器用于定時(shí),當(dāng)定時(shí)器超時(shí)后將延時(shí)消息發(fā)送到消息隊(duì)列中;所述的及時(shí)消息被直接放入消息隊(duì)列;所述的消息隊(duì)列用于按照消息進(jìn)入的先后順序有序的發(fā)送給主線程處理。
一種基于Android的Handler防內(nèi)存泄漏方法,其特征在于:它包括以下步驟:
接收異步任務(wù)的Runnable請求;
采用弱引用方法同步保存所有接收到的異步任務(wù)的Runnable請求;
執(zhí)行異步任務(wù)的Runnable請求,判斷是否有消息要發(fā)送;
在沒有消息要發(fā)送時(shí),結(jié)束子線線程;
在有消息要發(fā)送時(shí),發(fā)送消息及消息與異步線程的弱引用關(guān)系;
存儲消息及消息與異步線程的弱引用關(guān)系,并按照消息的時(shí)間順序發(fā)送給主線程處理。
按上述方法,采用雙向鏈表的方式存儲所述的異步任務(wù)的Runnable請求。
按上述方法,存儲所述的異步任務(wù)的Runnable請求后,按照優(yōu)先級移出異步任務(wù)的Runnable請求。
按上述方法,實(shí)現(xiàn)同步保存的具體方式為:
在接收到新的異步任務(wù)的Runnable請求時(shí),獲取鎖的所有權(quán);
在獲取到鎖的所有權(quán)時(shí)對所述的新的異步任務(wù)的Runnable請求進(jìn)行存儲或移出操作;
在存儲或移出操作完成時(shí),釋放鎖的所有權(quán)。
按上述方法,所述的消息包括及時(shí)消息和延時(shí)消息;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于武漢斗魚網(wǎng)絡(luò)科技有限公司,未經(jīng)武漢斗魚網(wǎng)絡(luò)科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610929424.5/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 一種Android設(shè)備之間遠(yuǎn)程桌面控制的方法
- 一種Android程序的執(zhí)行路徑的還原方法
- 基于ANCS協(xié)議兼容多平臺的通知消息獲取方法
- 基于字節(jié)碼插樁的Android程序監(jiān)控系統(tǒng)及方法
- 一種減少Android設(shè)備功耗的優(yōu)化方法及裝置
- 一種縮短無屏Android設(shè)備開機(jī)啟動時(shí)間的設(shè)置方法
- 一種基于Android雙系統(tǒng)的系統(tǒng)間通知同步方法
- 基于移動操作系統(tǒng)的Android兼容層實(shí)現(xiàn)方法和系統(tǒng)
- 一種Android智能設(shè)備APK安全管控方法
- 一種應(yīng)用程序開發(fā)中創(chuàng)建Android庫模塊依賴關(guān)系的方法及裝置





