用于具有顯示界面的軟件程序的內(nèi)存回收的方法和裝置的制造方法
【專利摘要】本發(fā)明實(shí)施例公開了一種用于具有顯示界面的軟件程序的內(nèi)存回收的方法和裝置。所述方法包括:響應(yīng)于頁面被關(guān)閉的事件,將所述頁面的頁面布局清空,以釋放所述頁面引用的視圖對(duì)象占用的內(nèi)存。采用本發(fā)明實(shí)施例,可使得不再被使用的內(nèi)存及時(shí)被釋放,提高系統(tǒng)的運(yùn)行性能。
【專利說明】
用于具有顯示界面的軟件程序的內(nèi)存回收的方法和裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種用于具有顯示界面的軟件程序的內(nèi)存回收的方法和裝置。
【背景技術(shù)】
[0002]隨著終端技術(shù)和軟件技術(shù)的發(fā)展和進(jìn)步,用戶可使用提供各種功能的應(yīng)用完成工作、進(jìn)行娛樂、社交等活動(dòng)。例如,用戶可使用手機(jī)查看網(wǎng)頁、使用團(tuán)購應(yīng)用購買團(tuán)購券、查看郵件、拍照、使用即時(shí)通訊軟件與好友聊天等等。
[0003]為了便于應(yīng)用軟件的開發(fā)設(shè)計(jì),目前高級(jí)的操作系統(tǒng)都配有內(nèi)存回收機(jī)制,可自動(dòng)地對(duì)已被關(guān)閉的程序占用的多數(shù)系統(tǒng)內(nèi)存進(jìn)行回收,編程人員在編寫程序代碼時(shí)無需單獨(dú)編寫代碼即可釋放這些內(nèi)存資源。
[0004]例如,在安卓(Android)系統(tǒng)上使用的應(yīng)用是根據(jù)Java編程語言編寫的。每打開一個(gè)安卓應(yīng)用就打開一個(gè)獨(dú)立的虛擬機(jī)。與Java的垃圾回收機(jī)制類似,安卓系統(tǒng)中設(shè)有內(nèi)存管理規(guī)則來進(jìn)行內(nèi)存調(diào)度和回收。當(dāng)頁面被打開時(shí),安卓應(yīng)用會(huì)通過內(nèi)存管理規(guī)則以堆棧的方式為該打開的頁面分配內(nèi)存(如24MB、48MB等),此時(shí),堆棧指針會(huì)指向內(nèi)存增加的方向,如果系統(tǒng)中的可用內(nèi)存低于預(yù)設(shè)的內(nèi)存閾值,則系統(tǒng)自動(dòng)地回收已被關(guān)閉的頁面中引用的內(nèi)存資源,此時(shí),堆棧指針會(huì)向內(nèi)存釋放的方向回調(diào)。
[0005]其中,圖1為垃圾回收器獲取能夠被回收和不能被回收的對(duì)象的示意圖,垃圾回收機(jī)制獲取能夠被回收和不能被回收的內(nèi)存資源的處理參見圖1,垃圾回收機(jī)制獲取該被關(guān)閉的頁面引用的任一對(duì)象,然后,檢測(cè)該對(duì)象是否引用其它對(duì)象和該對(duì)象是否被其它對(duì)象所引用,以此方式進(jìn)行查找檢測(cè),并在此過程中記錄未被引用的對(duì)象和被引用的對(duì)象,如圖1中對(duì)象A、B、C、D、H被引用,對(duì)象G被對(duì)象F引用,對(duì)象E沒有被引用,其中,箭頭表示引用關(guān)系。需要說明的是,如果對(duì)象F與對(duì)象G之間的引用關(guān)系被破壞,則對(duì)象F和對(duì)象G也將成為沒有被引用的對(duì)象。這種按需回收內(nèi)存的機(jī)制使得用戶無需手動(dòng)關(guān)閉進(jìn)程。由于采用按需回收的策略,所以可將該內(nèi)存閾值設(shè)置較低,從而在正常的使用條件下不需要頻繁進(jìn)行內(nèi)存回收、耗費(fèi)系統(tǒng)資源。
[0006]然而,當(dāng)內(nèi)存占用較多的應(yīng)用頻繁向系統(tǒng)申請(qǐng)內(nèi)存時(shí),例如,內(nèi)容豐富的頁面在短時(shí)間內(nèi)被反復(fù)打開、退出、打開、退出多次,由于多次從系統(tǒng)申請(qǐng)并占用較大的內(nèi)存,此時(shí),堆棧指針指向內(nèi)存占用較大的位置,由于內(nèi)存管理規(guī)則對(duì)被引用對(duì)象的存儲(chǔ)時(shí)長的設(shè)置,使得垃圾回收機(jī)制只能回收未被引用對(duì)象占用的內(nèi)存(即如圖1中對(duì)象E占用的內(nèi)存),因此已被關(guān)閉多次的多個(gè)頁面中引用的對(duì)象占用的內(nèi)存在系統(tǒng)中堆積,不能及時(shí)得到清除,從而影響系統(tǒng)整體的性能。此時(shí),由于已被關(guān)閉的頁面引用的大量內(nèi)存沒有被及時(shí)回收,因此當(dāng)再有進(jìn)程申請(qǐng)的內(nèi)存資源超過允許的閾值(即堆棧指針指向內(nèi)存的最大值)時(shí),系統(tǒng)將會(huì)拋出內(nèi)存溢出(Out Of Memory,00M)異常,導(dǎo)致該進(jìn)程無法正常運(yùn)行。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的實(shí)施例提供一種用于具有顯示界面的軟件程序的內(nèi)存回收的方法和裝置,使得不再被使用的內(nèi)存及時(shí)被釋放,提高系統(tǒng)的運(yùn)行性能。
[0008]為達(dá)到上述目的,本發(fā)明的實(shí)施例提供了一種用于具有顯示界面的軟件程序的內(nèi)存回收的方法。所述方法包括,響應(yīng)于頁面被關(guān)閉的事件,將所述頁面的頁面布局清空,以釋放所述頁面引用的視圖對(duì)象占用的內(nèi)存。
[0009]另外,所述軟件程序?yàn)榘沧繎?yīng)用程序,所述頁面為Activity類或其子類的對(duì)象,所述視圖對(duì)象為View類或其子類的對(duì)象。
[0010]另外,所述頁面被關(guān)閉的事件包括所述Activity類或其子類的對(duì)象的onDestroy方法被調(diào)用。
[0011]另外,所述將所述頁面的頁面布局清空的處理包括:在所述Activity類或其子類的對(duì)象的onDestroy方法中,倉Il建空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類的對(duì)象,并且以所述空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類對(duì)象為參數(shù)調(diào)用其setContentview方法,以釋放所述視圖對(duì)象占用的內(nèi)存。
[0012]另外,所述方法還包括:將所述頁面中引用的數(shù)據(jù)字段設(shè)置為空,以釋放所述數(shù)據(jù)字段占用的內(nèi)存。
[0013]為達(dá)到上述目的,本發(fā)明的實(shí)施例還提供了一種用于具有顯示界面的軟件程序的內(nèi)存回收的裝置。所述裝置包括:頁面關(guān)閉檢測(cè)模塊,用于檢測(cè)頁面被關(guān)閉的事件;視圖釋放響應(yīng)模塊,用于響應(yīng)于頁面被關(guān)閉的事件,將所述頁面的頁面布局清空,以釋放所述頁面引用的視圖對(duì)象占用的內(nèi)存。
[0014]另外,所述軟件程序?yàn)榘沧繎?yīng)用程序,所述頁面為Activity類或其子類的對(duì)象,所述視圖對(duì)象為View類或其子類的對(duì)象。
[0015]另外,所述視圖釋放響應(yīng)模塊用于調(diào)用所述Activity類或其子類的對(duì)象的onDestroy 方法。
[0016]另外,所述視圖釋放響應(yīng)模塊包括:對(duì)象創(chuàng)建單元,用于在所述Activity類或其子類的對(duì)象的onDestroy方法中,創(chuàng)建空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類的對(duì)象;視圖對(duì)象釋放單元,用于以所述空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類對(duì)象為參數(shù)調(diào)用其setContentview方法,以釋放所述視圖對(duì)象占用的內(nèi)存。
[0017]另外,所述裝置還包括:數(shù)據(jù)字段釋放模塊,用于將所述頁面中引用的數(shù)據(jù)字段設(shè)置為空,以釋放所述數(shù)據(jù)字段占用的內(nèi)存。
[0018]本發(fā)明實(shí)施例提供的用于具有顯示界面的軟件程序的內(nèi)存回收的方法和裝置,通過對(duì)頁面被關(guān)閉的事件的響應(yīng),以將該頁面的頁面布局清空,從而釋放內(nèi)存中該頁面中引用的視圖對(duì)象,使得不再被使用的內(nèi)存及時(shí)被釋放,增加內(nèi)存的可用空間,提高系統(tǒng)的運(yùn)行性能。
【附圖說明】
[0019]圖1為垃圾回收器獲取能夠被回收和不能被回收的對(duì)象的示意圖;
[0020]圖2為本發(fā)明實(shí)施例提供的用于具有顯示界面的軟件程序的內(nèi)存回收的方法的流程圖;
[0021]圖3為本發(fā)明實(shí)施例提供的用于具有顯示界面的軟件程序的內(nèi)存回收的方法的流程圖;
[0022]圖4為本發(fā)明實(shí)施例提供的用于具有顯示界面的軟件程序的內(nèi)存回收的裝置的結(jié)構(gòu)示意圖;
[0023]圖5為本發(fā)明實(shí)施例提供的用于具有顯示界面的軟件程序的內(nèi)存回收的裝置的結(jié)構(gòu)示意圖;
[0024]圖6為本發(fā)明實(shí)施例提供的用于具有顯示界面的軟件程序的內(nèi)存回收的裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0025]本方案的發(fā)明構(gòu)思是,提供一種在具有顯示界面的軟件程序中回收內(nèi)存的技術(shù)方案:對(duì)頁面被關(guān)閉的事件進(jìn)行響應(yīng),將該頁面的頁面布局清空,從而主動(dòng)地釋放內(nèi)存中該頁面中引用的視圖對(duì)象,使得不再被使用的內(nèi)存及時(shí)被釋放,提高系統(tǒng)的運(yùn)行性能。
[0026]下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例用于具有顯示界面的軟件程序的內(nèi)存回收的方法和裝置進(jìn)行詳細(xì)描述。
[0027]實(shí)施例一
[0028]圖2是本發(fā)明實(shí)施例提供的用于具有顯示界面的軟件程序的內(nèi)存回收的方法的流程圖。通過包括如圖4所示的裝置的計(jì)算機(jī)系統(tǒng)執(zhí)行所述方法。
[0029]如圖2所示,在步驟S210,檢測(cè)到頁面被關(guān)閉。
[0030]其中,軟件程序可以是基于windows操作系統(tǒng)的應(yīng)用程序,或者是基于安卓操作系統(tǒng)的安卓應(yīng)用程序,又或者是基于1S操作系統(tǒng)的應(yīng)用程序等。頁面是顯示界面中的顯示元素,其中,頁面可以是軟件程序中的任意對(duì)象(如按鍵或者菜單中的選項(xiàng)等)觸發(fā)生成的頁面,例如,即時(shí)通訊應(yīng)用的“添加”按鍵對(duì)應(yīng)的添加好友的頁面等。
[0031]例如,應(yīng)用程序在啟動(dòng)或進(jìn)行狀態(tài)轉(zhuǎn)換時(shí),向操作系統(tǒng)申請(qǐng)一定的內(nèi)存空間,并將頁面使用的視圖對(duì)象加載到內(nèi)存中,并進(jìn)行顯示。當(dāng)用戶基于某個(gè)頁面完成相應(yīng)的處理關(guān)閉該頁面時(shí),應(yīng)用程序可通過注冊(cè)檢測(cè)窗口事件,在其回調(diào)方法中檢測(cè)該頁面被關(guān)閉的操作。在使用更高級(jí)的編程架構(gòu)編寫的軟件程序中,可通過程序架構(gòu)中的指定方法來檢測(cè)該頁面被關(guān)閉的操作。
[0032]在步驟S220,響應(yīng)于頁面被關(guān)閉的事件,將所述頁面的頁面布局清空,以釋放所述頁面引用的視圖對(duì)象占用的內(nèi)存。
[0033]其中,視圖對(duì)象可以用于描述終端設(shè)備顯示的某頁面的窗口視圖。頁面中的任何顯示要素都可以是視圖對(duì)象,例如包括但不限于命令按鈕、圖像/圖標(biāo)、列表和/或表單等。
[0034]由于用戶每打開一個(gè)頁面時(shí),該應(yīng)用程序會(huì)向系統(tǒng)申請(qǐng)一定的內(nèi)存空間,并將相應(yīng)頁面使用的視圖對(duì)象加載到內(nèi)存中。當(dāng)該頁面被關(guān)閉時(shí),由于系統(tǒng)中內(nèi)存管理規(guī)則的限制,該頁面使用的數(shù)據(jù)并不會(huì)隨著頁面的關(guān)閉全部被從內(nèi)存中即時(shí)清除,其中部分?jǐn)?shù)據(jù)會(huì)在內(nèi)存中駐留一定的時(shí)長。如果在短時(shí)間內(nèi)反復(fù)打開、關(guān)閉內(nèi)容豐富的頁面(如視圖元素多的頁面),由于清除時(shí)間短,這些被反復(fù)打開/關(guān)閉的頁面引用的視圖對(duì)象以及數(shù)據(jù)對(duì)象大部分未能即時(shí)清除,導(dǎo)致這些頁面被關(guān)閉后繼續(xù)占用大量內(nèi)存,使得系統(tǒng)可用內(nèi)存急劇降低。
[0035]為此,在步驟S220,響應(yīng)于頁面被關(guān)閉的事件,通過將所述頁面的頁面布局清空,可主動(dòng)地將所述頁面引用的視圖對(duì)象設(shè)置為不再被引用,因此在頁面被關(guān)閉時(shí)主動(dòng)將該視圖對(duì)象占用的內(nèi)存回收給操作系統(tǒng),提高系統(tǒng)的運(yùn)行性能。從而可避免前述在短時(shí)間內(nèi)反復(fù)打開、關(guān)閉內(nèi)容豐富的頁面的情況下造成的系統(tǒng)可用內(nèi)存急劇降低的情況。
[0036]本發(fā)明實(shí)施例提供的用于具有顯示界面的軟件程序的內(nèi)存回收的方法,通過對(duì)頁面被關(guān)閉的事件的響應(yīng),以將該頁面的頁面布局清空,從而釋放內(nèi)存中該頁面中引用的視圖對(duì)象,使得不再被使用的內(nèi)存及時(shí)被釋放,增加內(nèi)存的可用空間,提高系統(tǒng)的運(yùn)行性能。
[0037]實(shí)施例二
[0038]以下將以安卓系統(tǒng)的軟件程序?yàn)槭纠敿?xì)描述本發(fā)明的用于具有顯示界面的應(yīng)用程序的內(nèi)存回收的方法。需要指出,本發(fā)明的發(fā)明構(gòu)思的適用不限于安卓系統(tǒng),而是適用于任何操作系統(tǒng)的具有顯示功能的應(yīng)用程序/軟件程序。
[0039]圖3為本發(fā)明提供的用于具有顯示界面的軟件程序的內(nèi)存回收的方法的另一個(gè)實(shí)施例的流程圖。
[0040]其中,軟件程序?yàn)槭褂肑ava編程語言編寫的安卓應(yīng)用程序。安卓應(yīng)用程序呈現(xiàn)的頁面和視圖等是通過相應(yīng)類或其子類的對(duì)象構(gòu)建而成的。例如,其頁面可為Activity類或其子類的對(duì)象,視圖對(duì)象可為View類或其子類的對(duì)象。其中,顯示給用戶的頁面中可包括多種視圖,例如,顯示的頁面中的文本數(shù)據(jù)可為文本視圖,顯示的頁面中的按鈕也可為一種視圖等;相應(yīng)的,View類或其子類的對(duì)象可以包括TextView類的對(duì)象、Button的對(duì)象等。
[0041]如圖3所示,在步驟S310,Activity類或其子類的對(duì)象的onDestroy方法被調(diào)用。該步驟與前述步驟S210相應(yīng),為其具體實(shí)現(xiàn)方式之一。
[0042]具體地,當(dāng)安卓應(yīng)用程序的某個(gè)頁面被創(chuàng)建時(shí),在Activity類或其子類的onCreate方法中,以該頁面相對(duì)應(yīng)的XML頁面布局對(duì)象或已有的View類或其子類的對(duì)象為參數(shù)調(diào)用setContentview方法,以構(gòu)建其中的View類或其子類的對(duì)象。
[0043]用戶關(guān)閉前述的某個(gè)頁面時(shí),當(dāng)該頁面的Activity類或其子類的對(duì)象的onDestroy方法被調(diào)用,以允許前述的對(duì)象進(jìn)行必要的清理操作。
[0044]在步驟S320,創(chuàng)建空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類的對(duì)象。
[0045]其中,XML頁面布局對(duì)象可用于描述安卓應(yīng)用程序的某頁面中文本數(shù)據(jù)、按鈕等在該頁面中的位置、形狀等信息。
[0046]在步驟S330,以在S320中創(chuàng)建的空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類對(duì)象為參數(shù)調(diào)用其setContentview方法,以釋放所述視圖對(duì)象占用的內(nèi)存。
[0047]通常,在編寫占用資源的類的onDestory方法時(shí),將其數(shù)據(jù)字段置為null,解除所述數(shù)據(jù)字段被引用的關(guān)系,從而釋放占用的相應(yīng)內(nèi)存資源。例如:
[0048]public void onDestory () {
[0049]textViewl = null ;// 置 null,釋放內(nèi)存
[0050]......
[0051]// etc.
[0052]super.0nDestory ();
[0053]}
[0054]然而,如前所述,當(dāng)安卓應(yīng)用程序的某個(gè)頁面被創(chuàng)建時(shí),在Activity類或其子類的onCreate方法中,以該頁面相對(duì)應(yīng)的XML頁面布局對(duì)象或已有的View類或其子類的對(duì)象為參數(shù)調(diào)用setContentview方法,以構(gòu)建頁面中使用的View類或其子類的對(duì)象。具體地,在setContentview方法中,通過Inflater類的InfIate方法來創(chuàng)建頁面中使用的View類或其子類的對(duì)象,如Contentview = Viewlnflater.1nflate ()。由于倉1J建的視圖對(duì)象Contentview是Activity的父類的私有字段,不能夠直接調(diào)用并將其置為null (Contentview = null)。
[0055]因此,無法在Activity對(duì)象的View類或其子類的對(duì)象的頁面被關(guān)閉時(shí)主動(dòng)回收視圖對(duì)象占用的內(nèi)存,而是通常依賴安卓系統(tǒng)的內(nèi)存管理和回收機(jī)制回收這些視圖對(duì)象占用的內(nèi)存,所以安卓系統(tǒng)中的虛擬機(jī)堆棧指針不能夠及時(shí)回調(diào)。
[0056]此夕卜,由于調(diào)用setContentview (null)會(huì)導(dǎo)致安卓應(yīng)用程序拋出NullPointerExcept1n(即空指針異常),因此也不適用。
[0057]為了能夠在onDestory方法中及時(shí)解除頁面中視圖對(duì)象的引用關(guān)系,從setContentview的定義和Activity類的對(duì)象的構(gòu)建原理出發(fā),即安卓應(yīng)用程序通過setContentview方法,并傳入與該頁面相對(duì)應(yīng)的XML頁面布局對(duì)象來構(gòu)建整個(gè)頁面的Activity對(duì)象,可創(chuàng)建一個(gè)空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類的對(duì)象,然后,再以該空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類對(duì)象為參數(shù)調(diào)用其setContentview方法。通過前述處理,清除頁面中的視圖布局,解除頁面中視圖對(duì)象的引用關(guān)系,主動(dòng)地釋放這些視圖對(duì)象占用的內(nèi)存。這樣,即使內(nèi)容豐富的頁面在短時(shí)間內(nèi)被反復(fù)打開、退出、打開、退出多次,使得已被關(guān)閉多次的多個(gè)頁面中引用的對(duì)象占用的內(nèi)存在系統(tǒng)中大量堆積,也可通過上述處理將頁面中的視圖布局清除,解除頁面中視圖對(duì)象的引用關(guān)系,從而使得安卓應(yīng)用程序通過垃圾回收機(jī)制將其回收并從內(nèi)存中刪除,主動(dòng)地釋放這些視圖對(duì)象占用的內(nèi)存。
[0058]除上述對(duì)內(nèi)存中的視圖對(duì)象進(jìn)行回收外,還可對(duì)內(nèi)存中的其他對(duì)象進(jìn)行回收,例如,將所述頁面中引用的數(shù)據(jù)字段設(shè)置為空,以釋放所述數(shù)據(jù)字段占用的內(nèi)存。
[0059]其中,數(shù)據(jù)字段可包括安卓操作系統(tǒng)預(yù)設(shè)的全局變量或局部變量、安卓應(yīng)用程序預(yù)設(shè)的局部變量等,例如,某頁面的顯示尺寸等。
[0060]本發(fā)明實(shí)施例提供的用于具有顯示界面的軟件程序的內(nèi)存回收的方法,通過調(diào)用安卓應(yīng)用程序中的Activity類或其子類的對(duì)象的onDestroy方法,創(chuàng)建空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類的對(duì)象,并以創(chuàng)建的對(duì)象為參數(shù)調(diào)用其setContentview方法,來釋放頁面的視圖對(duì)象占用的內(nèi)存,使得不再被使用的內(nèi)存及時(shí)被釋放,增加內(nèi)存的可用空間,避免系統(tǒng)出現(xiàn)00M等異常狀況,提高系統(tǒng)的運(yùn)行性能。
[0061]實(shí)施例三
[0062]基于相同的技術(shù)構(gòu)思,本發(fā)明實(shí)施例還提供了一種用于具有顯示界面的軟件程序的內(nèi)存回收的裝置。如圖4所示,所述裝置包括頁面關(guān)閉檢測(cè)模塊410和視圖釋放響應(yīng)模塊 420。
[0063]頁面關(guān)閉檢測(cè)模塊410用于檢測(cè)頁面被關(guān)閉的事件。
[0064]視圖釋放響應(yīng)模塊420用于響應(yīng)于頁面被關(guān)閉的事件,將所述頁面的頁面布局清空,以釋放所述頁面引用的視圖對(duì)象占用的內(nèi)存。
[0065]另外,所述軟件程序?yàn)榘沧繎?yīng)用程序,所述頁面為Activity類或其子類的對(duì)象,所述視圖對(duì)象為View類或其子類的對(duì)象。
[0066]另外,視圖釋放響應(yīng)模塊420用于調(diào)用所述Activity類或其子類的對(duì)象的onDestroy 方法。
[0067]另外,在圖4所示實(shí)施例的基礎(chǔ)上,如圖5所示視圖釋放響應(yīng)模塊420包括:對(duì)象創(chuàng)建單元421,用于在所述Activity類或其子類的對(duì)象的onDestroy方法中,倉Il建空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類的對(duì)象;視圖對(duì)象釋放單元422,用于以所述空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類對(duì)象為參數(shù)調(diào)用其setContentview方法,以釋放所述視圖對(duì)象占用的內(nèi)存。
[0068]進(jìn)一步地,在圖4所示實(shí)施例的基礎(chǔ)上,如圖6所示的裝置還可以包括:數(shù)據(jù)字段釋放模塊430,用于將所述頁面中引用的數(shù)據(jù)字段設(shè)置為空,以釋放所述數(shù)據(jù)字段占用的內(nèi)存。
[0069]本發(fā)明實(shí)施例提供的用于具有顯示界面的軟件程序的內(nèi)存回收的裝置,通過對(duì)頁面被關(guān)閉的事件的響應(yīng),以將該頁面的頁面布局清空,從而釋放內(nèi)存中該頁面中引用的視圖對(duì)象,使得不再被使用的內(nèi)存及時(shí)被釋放,增加內(nèi)存的可用空間,提高系統(tǒng)的運(yùn)行性能。
[0070]進(jìn)一步地,本發(fā)明實(shí)施例中,一方面,通過調(diào)用安卓應(yīng)用程序中的Activity類或其子類的對(duì)象的onDestroy方法,創(chuàng)建空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類的對(duì)象,并以創(chuàng)建的對(duì)象為參數(shù)調(diào)用其setContentview方法,來釋放頁面的視圖對(duì)象占用的內(nèi)存,使得不再被使用的內(nèi)存可以及時(shí)被釋放,增加內(nèi)存的可用空間,避免系統(tǒng)出現(xiàn)00M等異常狀況,提高系統(tǒng)的運(yùn)行性能。另一方面,還通過調(diào)用onDestroy方法對(duì)頁面中引用的數(shù)據(jù)字段進(jìn)行清空處理,使得不再被使用的內(nèi)存可以及時(shí)的進(jìn)一步的被釋放,擴(kuò)大了內(nèi)存的可用空間,可進(jìn)一步提高系統(tǒng)的運(yùn)行性能。
[0071]需要指出,根據(jù)實(shí)施的需要,可將本申請(qǐng)中描述的各個(gè)步驟/部件拆分為更多步驟/部件,也可將兩個(gè)或多個(gè)步驟/部件或者步驟/部件的部分操作組合成新的步驟/部件,以實(shí)現(xiàn)本發(fā)明的目的。
[0072]上述根據(jù)本發(fā)明的方法可在硬件、固件中實(shí)現(xiàn),或者被實(shí)現(xiàn)為可存儲(chǔ)在記錄介質(zhì)(諸如CD ROM、RAM、軟盤、硬盤或磁光盤)中的軟件或計(jì)算機(jī)代碼,或者被實(shí)現(xiàn)通過網(wǎng)絡(luò)下載的原始存儲(chǔ)在遠(yuǎn)程記錄介質(zhì)或非暫時(shí)機(jī)器可讀介質(zhì)中并將被存儲(chǔ)在本地記錄介質(zhì)中的計(jì)算機(jī)代碼,從而在此描述的方法可被存儲(chǔ)在使用通用計(jì)算機(jī)、專用處理器或者可編程或?qū)S糜布?諸如ASIC或FPGA)的記錄介質(zhì)上的這樣的軟件處理??梢岳斫?,計(jì)算機(jī)、處理器、微處理器控制器或可編程硬件包括可存儲(chǔ)或接收軟件或計(jì)算機(jī)代碼的存儲(chǔ)組件(例如,RAM、R0M、閃存等),當(dāng)所述軟件或計(jì)算機(jī)代碼被計(jì)算機(jī)、處理器或硬件訪問且執(zhí)行時(shí),實(shí)現(xiàn)在此描述的處理方法。此外,當(dāng)通用計(jì)算機(jī)訪問用于實(shí)現(xiàn)在此示出的處理的代碼時(shí),代碼的執(zhí)行將通用計(jì)算機(jī)轉(zhuǎn)換為用于執(zhí)行在此示出的處理的專用計(jì)算機(jī)。
[0073]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【主權(quán)項(xiàng)】
1.一種用于具有顯示界面的軟件程序的內(nèi)存回收的方法,其特征在于,所述方法包括: 響應(yīng)于頁面被關(guān)閉的事件,將所述頁面的頁面布局清空,以釋放所述頁面引用的視圖對(duì)象占用的內(nèi)存。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述軟件程序?yàn)榘沧繎?yīng)用程序,所述頁面為Activity類或其子類的對(duì)象,所述視圖對(duì)象為View類或其子類的對(duì)象。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述頁面被關(guān)閉的事件包括所述Activity類或其子類的對(duì)象的onDestroy方法被調(diào)用。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述將所述頁面的頁面布局清空的處理包括: 在所述Activity類或其子類的對(duì)象的onDestroy方法中,倉Il建空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類的對(duì)象,并且以所述空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類對(duì)象為參數(shù)調(diào)用其setContentview方法,以釋放所述視圖對(duì)象占用的內(nèi)存。5.根據(jù)權(quán)利要求1?4中任一項(xiàng)所述的方法,其特征在于,所述方法還包括: 將所述頁面中引用的數(shù)據(jù)字段設(shè)置為空,以釋放所述數(shù)據(jù)字段占用的內(nèi)存。6.—種用于具有顯示界面的軟件程序的內(nèi)存回收的裝置,其特征在于,所述裝置包括: 頁面關(guān)閉檢測(cè)模塊,用于檢測(cè)頁面被關(guān)閉的事件; 視圖釋放響應(yīng)模塊,用于響應(yīng)于頁面被關(guān)閉的事件,將所述頁面的頁面布局清空,以釋放所述頁面引用的視圖對(duì)象占用的內(nèi)存。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述軟件程序?yàn)榘沧繎?yīng)用程序,所述頁面為Activity類或其子類的對(duì)象,所述視圖對(duì)象為View類或其子類的對(duì)象。8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述視圖釋放響應(yīng)模塊用于調(diào)用所述Activity類或其子類的對(duì)象的onDestroy方法。9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述視圖釋放響應(yīng)模塊包括: 對(duì)象創(chuàng)建單元,用于在所述Activity類或其子類的對(duì)象的onDestroy方法中,創(chuàng)建空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類的對(duì)象; 視圖對(duì)象釋放單元,用于以所述空的XML頁面布局對(duì)象或空的View類對(duì)象或其子類對(duì)象為參數(shù)調(diào)用其setContentview方法,以釋放所述視圖對(duì)象占用的內(nèi)存。10.根據(jù)權(quán)利要求6?9中任一項(xiàng)所述的裝置,其特征在于,所述裝置還包括: 數(shù)據(jù)字段釋放模塊,用于將所述頁面中引用的數(shù)據(jù)字段設(shè)置為空,以釋放所述數(shù)據(jù)字段占用的內(nèi)存。
【文檔編號(hào)】G06F9/455GK105893110SQ201510648453
【公開日】2016年8月24日
【申請(qǐng)日】2015年10月9日
【發(fā)明人】王偉明, 王若韜
【申請(qǐng)人】樂視網(wǎng)信息技術(shù)(北京)股份有限公司