在應(yīng)用程序中進行進程回收處理的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別是一種在應(yīng)用程序中進行進程回收處理的方法及裝置。
【背景技術(shù)】
[0002]在終端設(shè)備中,出于成本的考慮,系統(tǒng)內(nèi)存非常有限,當(dāng)系統(tǒng)在較大的負載下運行的時候,容易出現(xiàn)內(nèi)存不足的情況。
[0003]目前,在Andrο i d (安卓)操作系統(tǒng)中,系統(tǒng)會在內(nèi)存降低到系統(tǒng)設(shè)定的閾值的時候,根據(jù)進程的活躍度回收進程。雖然這從一定程度上緩解了內(nèi)存不足的情況,然而現(xiàn)有的根據(jù)進程的活躍度回收進程的方法,有時候會造成操作系統(tǒng)應(yīng)用的進程被回收掉,導(dǎo)致終端設(shè)備無法正常的運行的缺陷。此外,系統(tǒng)在內(nèi)存降低到系統(tǒng)設(shè)定的閾值的時候,才會根據(jù)進程的活躍度回收進程,不能實現(xiàn)進程的及時回收,在回收之前進程仍然會長期占用內(nèi)存資源。
【發(fā)明內(nèi)容】
[0004]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的在應(yīng)用程序中進行進程回收處理的方法及相應(yīng)的裝置。
[0005]依據(jù)本發(fā)明的一方面,提供了一種在應(yīng)用程序中進行進程回收處理的方法,包括:
[0006]監(jiān)聽預(yù)設(shè)的進程回收事件;
[0007]當(dāng)監(jiān)聽到所述預(yù)設(shè)的進程回收事件時,獲取當(dāng)前進程內(nèi)運行的各組件的屬性信息;
[0008]將所述當(dāng)前進程內(nèi)運行的各組件的屬性信息與進程回收規(guī)則對應(yīng)的組件的屬性信息進行比對,確定是否對所述當(dāng)前進程進行回收處理。
[0009]可選地,所述方法還包括:在指定類中注冊不能被回收的組件;
[0010]將所述當(dāng)前進程內(nèi)運行的各組件的屬性信息與進程回收規(guī)則對應(yīng)的組件的屬性信息進行比對,確定是否對所述當(dāng)前進程進行回收處理,包括:
[0011]判斷所述當(dāng)前進程內(nèi)運行的各組件是否注冊到所述指定類中;
[0012]若所述當(dāng)前進程內(nèi)運行的各組件中存在至少一個組件注冊到所述指定類中,則確定對所述當(dāng)前進程不進行回收處理。
[0013]可選地,所述方法還包括:
[0014]若所述當(dāng)前進程內(nèi)運行的各組件中不存在組件注冊到所述指定類中,則確定對所述當(dāng)前進程進程回收處理。
[0015]可選地,判斷所述當(dāng)前進程內(nèi)運行的各組件是否注冊到所述指定類中,包括:
[0016]調(diào)用所述指定類的判斷方法,由所述判斷方法查找所述當(dāng)前進程內(nèi)運行的各組件是否注冊到所述指定類中;
[0017]接收所述判斷方法返回的查找結(jié)果;
[0018]根據(jù)所述查找結(jié)果確定是否回收所述當(dāng)前進程。
[0019]可選地,所述預(yù)設(shè)的進程回收事件包括下列至少之一:
[0020]組件停止事件;
[0021]組件銷毀事件;
[0022 ] 通過計時器設(shè)定的計時時長到達指定時長事件。
[0023]可選地,若所述預(yù)設(shè)的進程回收事件包括組件停止事件和/或組件銷毀事件,則所述監(jiān)聽預(yù)設(shè)的進程回收事件之前,所述方法還包括:
[0024]注冊組件的生命周期回調(diào)方法,以在回調(diào)時接收組件的生命周期事件。
[0025]可選地,所述組件的生命周期事件包括下列至少之一:
[0026]組件創(chuàng)建事件、組件啟動事件、組件恢復(fù)事件、組件暫停事件、組件停止事件、組件銷毀事件。
[0027]可選地,將所述當(dāng)前進程內(nèi)運行的各組件的屬性信息與進程回收規(guī)則對應(yīng)的組件的屬性信息進行比對,確定是否對所述當(dāng)前進程進行回收處理,包括:
[0028]判斷所述當(dāng)前進程內(nèi)運行的各組件中是否存在被恢復(fù)的組件;
[0029]若是,則確定對所述當(dāng)前進程不進行回收處理;
[0030]若否,則確定對所述當(dāng)前進程進行回收處理。
[0031 ] 可選地,所述方法還包括:
[0032]對應(yīng)用程序中的各進程設(shè)置計數(shù)字段,用于對該進程中被恢復(fù)和/或被暫停的組件進行計數(shù);
[0033]當(dāng)接收到組件恢復(fù)事件時,對被恢復(fù)的組件所在進程的計數(shù)字段增加計數(shù)值;
[0034]當(dāng)接收到組件暫停事件時,對被暫停的組件所在進程的計數(shù)字段減少計數(shù)值。
[0035]可選地,判斷所述當(dāng)前進程內(nèi)運行的各組件中是否存在被恢復(fù)的組件,包括:
[0036]讀取所述當(dāng)前進程的計數(shù)字段;
[0037]判斷所述計數(shù)字段的計數(shù)值是否大于指定閾值;
[0038]若是,則確定所述當(dāng)前進程內(nèi)運行的各組件中存在被恢復(fù)的組件;
[0039]若否,則確定所述當(dāng)前進程內(nèi)運行的各組件中不存在被恢復(fù)的組件。
[0040]可選地,將所述當(dāng)前進程內(nèi)運行的各組件的屬性信息與進程回收規(guī)則對應(yīng)的組件的屬性信息進行比對,確定是否對所述當(dāng)前進程進行回收處理,包括:
[0041]判斷所述當(dāng)前進程是否為空進程或后臺進程;
[0042]若是,則確定對所述當(dāng)前進程進行回收處理。
[0043]依據(jù)本發(fā)明的另一方面,還提供了一種在應(yīng)用程序中進行進程回收處理的裝置,包括:
[0044]監(jiān)聽模塊,適于監(jiān)聽預(yù)設(shè)的進程回收事件;
[0045]獲取模塊,適于當(dāng)監(jiān)聽到所述預(yù)設(shè)的進程回收事件時,獲取當(dāng)前進程內(nèi)運行的各組件的屬性信息;
[0046]確定模塊,適于將所述當(dāng)前進程內(nèi)運行的各組件的屬性信息與進程回收規(guī)則對應(yīng)的組件的屬性信息進行比對,確定是否對所述當(dāng)前進程進行回收處理。
[0047]可選地,所述裝置還包括:
[0048]第一注冊模塊,適于在指定類中注冊不能被回收的組件;
[0049]所述確定模塊還適于:判斷所述當(dāng)前進程內(nèi)運行的各組件是否注冊到所述指定類中;若所述當(dāng)前進程內(nèi)運行的各組件中存在至少一個組件注冊到所述指定類中,則確定對所述當(dāng)前進程不進行回收處理。
[0050]可選地,所述確定模塊還適于:
[0051]若所述當(dāng)前進程內(nèi)運行的各組件中不存在組件注冊到所述指定類中,則確定對所述當(dāng)前進程進程回收處理。
[0052]可選地,所述確定模塊還適于:
[0053]調(diào)用所述指定類的判斷方法,由所述判斷方法查找所述當(dāng)前進程內(nèi)運行的各組件是否注冊到所述指定類中;
[0054]接收所述判斷方法返回的查找結(jié)果;
[0055]根據(jù)所述查找結(jié)果確定是否回收所述當(dāng)前進程。
[0056]可選地,所述預(yù)設(shè)的進程回收事件包括下列至少之一:
[0057]組件停止事件;
[0058]組件銷毀事件;
[0059 ] 通過計時器設(shè)定的計時時長到達指定時長事件。
[0060]可選地,所述裝置還包括:
[0061]第二注冊模塊,適于若所述預(yù)設(shè)的進程回收事件包括組件停止事件和/或組件銷毀事件,在監(jiān)聽模塊監(jiān)聽預(yù)設(shè)的進程回收事件之前,注冊組件的生命周期回調(diào)方法,以在回調(diào)時接收組件的生命周期事件。
[0062]可選地,所述組件的生命周期事件包括下列至少之一:
[0063]組件創(chuàng)建事件、組件啟動事件、組件恢復(fù)事件、組件暫停事件、組件停止事件、組件銷毀事件。
[0064]可選地,所述確定模塊還適于:
[0065]判斷所述當(dāng)前進程內(nèi)運行的各組件中是否存在被恢復(fù)的組件;
[0066]若是,則確定對所述當(dāng)前進程不進行回收處理;
[0067]若否,則確定對所述當(dāng)前進程進行回收處理。
[0068]可選地,所述裝置還包括:
[0069]計數(shù)字段處理模塊,適于對應(yīng)用程序中的各進程設(shè)置計數(shù)字段,用于對該進程中被恢復(fù)和/或被暫停的組件進行計數(shù);當(dāng)接收到組件恢復(fù)事件時,對被恢復(fù)的組件所在進程的計數(shù)字段增加計數(shù)值;當(dāng)接收到組件暫停事件時,對被暫停的組件所在進程的計數(shù)字段減少計數(shù)值。
[0070]可選地,所述確定模塊還適于:
[0071 ]讀取所述當(dāng)前進程的計數(shù)字段;
[0072]判斷所述計數(shù)字段的計數(shù)值是否大于指定閾值;
[0073]若是,則確定所述當(dāng)前進程內(nèi)運行的各組件中存在被恢復(fù)的組件;
[0074]若否,則確定所述當(dāng)前進程內(nèi)運行的各組件中不存在被恢復(fù)的組件。
[0075]可選地,所述確定模塊還適于:
[0076]判斷所述當(dāng)前進程是否為空進程或后臺進程;
[0077]若是,則確定對所述當(dāng)前進程進行回收處理。
[0078]本發(fā)明實施例實現(xiàn)了對應(yīng)用程序的進程進行回收處理的方案,首先設(shè)置了預(yù)設(shè)的進程回收事件,并對預(yù)設(shè)的進程回收事件進行主動監(jiān)聽,當(dāng)監(jiān)聽到預(yù)設(shè)的進程回收事件時,獲取當(dāng)前進程內(nèi)運行的各組件的屬性信息,進而將當(dāng)前進程內(nèi)運行的各組件的屬性信息與進程回收規(guī)則對應(yīng)的組件的屬性信息進行比對,確定是否對當(dāng)前進程進行回收處理。由此,本發(fā)明實施例能夠?qū)崿F(xiàn)對進程進行及時回收處理的目的,解決現(xiàn)有技術(shù)中不能實現(xiàn)進程的及時回收,導(dǎo)致在回收之前進程仍然會長期占用內(nèi)存資源的問題。并且,本發(fā)明實施例是將當(dāng)前進程內(nèi)運行的各組件的屬性信息與進程回收規(guī)則對應(yīng)的組件的屬性信息進行比對,確定是否對當(dāng)前進程進行回收處理,而不是僅僅根據(jù)進程的活躍度回收進程,從而使得操作系統(tǒng)應(yīng)用的進程不會被回收掉,能夠保證終端設(shè)備的正常運行。
[0079]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的【具體實施方式】。
[0080]根據(jù)下文結(jié)合附圖對本發(fā)明具體實施例的詳細描述,本領(lǐng)域技術(shù)人員將會更加明了本發(fā)明的上述以及其他目的、優(yōu)點和特征。
【附圖說明】
[0081]通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0082]圖1示出了根據(jù)本發(fā)明一個實施例的在應(yīng)用程序中進行進程回收處理的方法的流程圖;
[0083]圖2所示為Activity的狀態(tài)轉(zhuǎn)換示意圖;
[0084]圖3示出了根據(jù)本發(fā)明一個實施例的確定是否對當(dāng)前進程進行回收處理的方法的流程圖;
[0085]圖4示出了根據(jù)本發(fā)明另一個實施例的確定是否對當(dāng)前進程進行回收處理的方法的