本發(fā)明涉及檢測(cè)技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用操作監(jiān)測(cè)方法及裝置。
背景技術(shù):
在android當(dāng)中有時(shí)為了保證給用戶更好的用戶體驗(yàn),或者針對(duì)用戶習(xí)慣的特殊廣告的投送等,都需要知道用戶使用了哪些應(yīng)用,其中,一種方式是前臺(tái)運(yùn)行程序確定為用戶所使用的應(yīng)用。
因此,在現(xiàn)有技術(shù)中,為了知道用戶使用了哪些應(yīng)用,一種技術(shù)方案是:當(dāng)一個(gè)App處于前臺(tái)的時(shí)候會(huì)處于RunningTask的這個(gè)棧的棧頂,通過(guò)取出RunningTask的棧頂?shù)娜蝿?wù)進(jìn)程,然后讀出其包名,但是在版本的系統(tǒng)只能獲取自身應(yīng)用的棧,另一種技術(shù)方案是:通過(guò)RunningProcess,RunningProcess來(lái)獲取當(dāng)前運(yùn)行的進(jìn)程棧列表,只要獲取當(dāng)前棧頂就確定為前臺(tái)應(yīng)用,當(dāng)是應(yīng)用中包含服務(wù)時(shí),就算后臺(tái)運(yùn)行服務(wù)也會(huì)在RunningProcess,RunningProcess獲取的進(jìn)程棧列表中,甚至在棧頂,確定前臺(tái)應(yīng)用有誤。上述兩種技術(shù)方案可以看出,現(xiàn)有技術(shù)所確定的用戶操作應(yīng)用會(huì)不準(zhǔn)確。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述問(wèn)題,本發(fā)明實(shí)施例通過(guò)提供一種應(yīng)用操作監(jiān)測(cè)方法及裝置,以準(zhǔn)確監(jiān)測(cè)用戶所操作的應(yīng)用。
第一方面,本發(fā)明實(shí)施例提供了一種應(yīng)用操作監(jiān)測(cè)方法,包括:
從運(yùn)行進(jìn)程目錄中獲取正在運(yùn)行的M個(gè)進(jìn)程的進(jìn)程信息,所述進(jìn)程信息包括進(jìn)程類型信息和進(jìn)程優(yōu)先級(jí)信息,M為正整數(shù);
根據(jù)所述M個(gè)進(jìn)程的進(jìn)程類型信息,識(shí)別出所述M個(gè)進(jìn)程中的N個(gè)非系統(tǒng)應(yīng)用進(jìn)程,N為小于或等于M的正整數(shù);
根據(jù)所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程的進(jìn)程優(yōu)先級(jí)信息,識(shí)別出所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程中的前臺(tái)運(yùn)行應(yīng)用進(jìn)程。
優(yōu)選的,所述從運(yùn)行進(jìn)程目錄中獲取正在運(yùn)行的M個(gè)進(jìn)程的進(jìn)程信息,包括:
在所述運(yùn)行進(jìn)程目錄的路徑下創(chuàng)建以所述運(yùn)行進(jìn)程目錄為傳入?yún)?shù)的文件對(duì)象;
獲取所述文件對(duì)象的目錄下的M個(gè)文件;
將所述M個(gè)文件的文件名對(duì)應(yīng)確定為所述M個(gè)進(jìn)程的唯一標(biāo)識(shí);
獲取所述M個(gè)進(jìn)程的唯一標(biāo)識(shí)的子目錄下信息為所述M個(gè)進(jìn)程的進(jìn)程信息。
優(yōu)選的,所述根據(jù)所述M個(gè)進(jìn)程的進(jìn)程類型信息,識(shí)別出所述M個(gè)進(jìn)程中的N個(gè)非系統(tǒng)應(yīng)用進(jìn)程,包括:
從所述M個(gè)進(jìn)程中排除所述進(jìn)程類型信息符合如下任一種字段的進(jìn)程,以得到所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程:
背景進(jìn)程標(biāo)識(shí)字段、非應(yīng)用進(jìn)程標(biāo)識(shí)字段、系統(tǒng)應(yīng)用標(biāo)識(shí)碼段。
優(yōu)選的,所述從所述M個(gè)進(jìn)程中排除所述進(jìn)程類型信息符合如下任一種字段的進(jìn)程,包括:
識(shí)別所述M個(gè)進(jìn)程中的第m個(gè)進(jìn)程的控制組群文件是否包含所述背景進(jìn)程標(biāo)識(shí)字段,m依次為1至M;
如果所述第m個(gè)進(jìn)程的控制組群文件包含所述背景進(jìn)程標(biāo)識(shí)字段,排除所述第m個(gè)進(jìn)程,否則識(shí)別所述第m個(gè)進(jìn)程的控制組群文件是否包含所述非應(yīng)用進(jìn)程標(biāo)識(shí)字段;
如果所述第m個(gè)進(jìn)程的控制組群文件包含所述非應(yīng)用進(jìn)程標(biāo)識(shí)字段,排除所述第m個(gè)進(jìn)程,否則識(shí)別所述第m個(gè)進(jìn)程的控制組群文件中的應(yīng)用標(biāo)識(shí)碼是否在預(yù)設(shè)碼段內(nèi);
如果所述第m個(gè)進(jìn)程的控制組群文件中的應(yīng)用標(biāo)識(shí)碼在所述預(yù)設(shè)碼段內(nèi),排除所述第m個(gè)進(jìn)程。
優(yōu)選的,所述根據(jù)所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程的進(jìn)程優(yōu)先級(jí)信息,識(shí)別出所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程中的前臺(tái)運(yùn)行應(yīng)用進(jìn)程,包括:
遍歷所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程的資源占用優(yōu)先級(jí);
確定出所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程中資源占用優(yōu)先級(jí)最高的進(jìn)程為所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程。
優(yōu)選的,在所述識(shí)別出所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程中的前臺(tái)運(yùn)行應(yīng)用進(jìn)程之后,所述方法還包括:
按照預(yù)設(shè)周期輪詢所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程;
基于對(duì)所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程的輪詢次數(shù)確定所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程在前臺(tái)的停留時(shí)長(zhǎng)。
第二方面,本發(fā)明實(shí)施例提供了一種應(yīng)用操作監(jiān)測(cè)裝置,包括:
進(jìn)程信息獲取模塊,用于從運(yùn)行進(jìn)程目錄中獲取正在運(yùn)行的M個(gè)進(jìn)程的進(jìn)程信息,所述進(jìn)程信息包括進(jìn)程類型信息和進(jìn)程優(yōu)先級(jí)信息,M為正整數(shù);
非系統(tǒng)應(yīng)用進(jìn)程識(shí)別模塊,用于根據(jù)所述M個(gè)進(jìn)程的進(jìn)程類型信息,識(shí)別出所述M個(gè)進(jìn)程中的N個(gè)非系統(tǒng)應(yīng)用進(jìn)程,N為小于或等于M的正整數(shù);
前臺(tái)應(yīng)用進(jìn)程識(shí)別模塊,用于根據(jù)所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程的進(jìn)程優(yōu)先級(jí)信息,識(shí)別出所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程中的前臺(tái)運(yùn)行應(yīng)用進(jìn)程。
優(yōu)選的,所述進(jìn)程信息獲取模塊,包括:
創(chuàng)建單元,用于在所述運(yùn)行進(jìn)程目錄的路徑下創(chuàng)建以所述運(yùn)行進(jìn)程目錄為傳入?yún)?shù)的文件對(duì)象;
文件獲取單元,用于獲取所述文件對(duì)象的目錄下的M個(gè)文件;
確定單元,用于將所述M個(gè)文件的文件名對(duì)應(yīng)確定為所述M個(gè)進(jìn)程的唯一標(biāo)識(shí);
進(jìn)程信息獲取單元,用于獲取所述M個(gè)進(jìn)程的唯一標(biāo)識(shí)的子目錄下信息為所述M個(gè)進(jìn)程的進(jìn)程信息。
優(yōu)選的,所述非系統(tǒng)應(yīng)用進(jìn)程識(shí)別模塊,包括:
排除單元,用于從所述M個(gè)進(jìn)程中排除所述進(jìn)程類型信息符合如下任一種字段的進(jìn)程,以得到所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程:
背景進(jìn)程標(biāo)識(shí)字段、非應(yīng)用進(jìn)程標(biāo)識(shí)字段、系統(tǒng)應(yīng)用標(biāo)識(shí)碼段。
優(yōu)選的,所述排除單元,具體用于:
識(shí)別所述M個(gè)進(jìn)程中的第m個(gè)進(jìn)程的控制組群文件是否包含所述背景進(jìn)程標(biāo)識(shí)字段,m依次為1至M;
如果所述第m個(gè)進(jìn)程的控制組群文件包含所述背景進(jìn)程標(biāo)識(shí)字段,排除所述第m個(gè)進(jìn)程,否則識(shí)別所述第m個(gè)進(jìn)程的控制組群文件是否包含所述非應(yīng)用進(jìn)程標(biāo)識(shí)字段;
如果所述第m個(gè)進(jìn)程的控制組群文件包含所述非應(yīng)用進(jìn)程標(biāo)識(shí)字段,排除所述第m個(gè)進(jìn)程,否則識(shí)別所述第m個(gè)進(jìn)程的控制組群文件中的應(yīng)用標(biāo)識(shí)碼是否在預(yù)設(shè)碼段內(nèi);
如果所述第m個(gè)進(jìn)程的控制組群文件中的應(yīng)用標(biāo)識(shí)碼在所述預(yù)設(shè)碼段內(nèi),排除所述第m個(gè)進(jìn)程。
優(yōu)選的,所述前臺(tái)應(yīng)用進(jìn)程識(shí)別模塊,包括:
遍歷單元,用于遍歷所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程的資源占用優(yōu)先級(jí);
前臺(tái)應(yīng)用進(jìn)程確定單元,用于確定出所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程中資源占用優(yōu)先級(jí)最高的進(jìn)程為所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程。
優(yōu)選的,所述裝置還包括:
輪詢模塊,用于按照預(yù)設(shè)周期輪詢所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程;
停留時(shí)長(zhǎng)確定模塊,用于基于對(duì)所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程的輪詢次數(shù)確定所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程在前臺(tái)的停留時(shí)長(zhǎng)。
優(yōu)選的,所述裝置還包括:
判斷模塊,用戶判斷所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程在前臺(tái)的停留時(shí)長(zhǎng)是否超過(guò)預(yù)設(shè)時(shí)長(zhǎng);
推送單元,用于如果所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程在前臺(tái)的停留時(shí)長(zhǎng)超過(guò)所述預(yù)設(shè)時(shí)長(zhǎng),向用戶推送與所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程相關(guān)的可讀內(nèi)容。
本發(fā)明實(shí)施例中提供的一個(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
通過(guò)從運(yùn)行進(jìn)程目錄中獲取正在運(yùn)行進(jìn)程的進(jìn)程類型信息和進(jìn)程優(yōu)先級(jí)信息,根據(jù)正在運(yùn)行進(jìn)程的進(jìn)程類型信息識(shí)別出正在運(yùn)行的非系統(tǒng)應(yīng)用進(jìn)程,根據(jù)正在運(yùn)行的非系統(tǒng)應(yīng)用進(jìn)程的進(jìn)程優(yōu)先級(jí)信息識(shí)別出前臺(tái)運(yùn)行應(yīng)用進(jìn)程。從而通過(guò)運(yùn)行進(jìn)程目錄中能夠獲取到所有正在運(yùn)行的進(jìn)程,然后排除了會(huì)被誤判為前臺(tái)應(yīng)用進(jìn)程的進(jìn)程,以保留的都為應(yīng)用進(jìn)程,再?gòu)膽?yīng)用進(jìn)程的進(jìn)程優(yōu)先級(jí)信息識(shí)別前臺(tái)運(yùn)行應(yīng)用進(jìn)程,從而確保了識(shí)別前臺(tái)運(yùn)行應(yīng)用進(jìn)程的準(zhǔn)確性,進(jìn)而以準(zhǔn)確監(jiān)測(cè)用戶所操作的應(yīng)用。
進(jìn)一步的,確保了識(shí)別前臺(tái)運(yùn)行應(yīng)用進(jìn)程的準(zhǔn)確性有利于提高向用戶推送內(nèi)容的準(zhǔn)確性。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的應(yīng)用操作監(jiān)測(cè)方法的流程圖;
圖2為本發(fā)明實(shí)施例中識(shí)別非系統(tǒng)應(yīng)用進(jìn)程的流程圖;
圖3為本發(fā)明實(shí)施例中識(shí)別前臺(tái)運(yùn)行應(yīng)用進(jìn)程的流程圖;
圖4為本發(fā)明實(shí)施例提供的應(yīng)用操作監(jiān)測(cè)方法的功能模塊圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
參考圖1所示,本發(fā)明實(shí)施提供了一種應(yīng)用操作監(jiān)測(cè)方法,應(yīng)用于安裝有多個(gè)應(yīng)用的電子設(shè)備,具體的,該電子設(shè)備可以為個(gè)人計(jì)算機(jī)、智能手機(jī)(具體可以為Android手機(jī)、IOS系統(tǒng)的手機(jī))、PAD(平板電腦)。
參考圖1所示,本發(fā)明實(shí)施提供的應(yīng)用操作監(jiān)測(cè)方法包括如下步驟:
S101、從運(yùn)行進(jìn)程目錄中獲取正在運(yùn)行的M個(gè)進(jìn)程的進(jìn)程信息,進(jìn)程信息包括進(jìn)程類型信息和進(jìn)程優(yōu)先級(jí)信息,M為正整數(shù);
S102、根據(jù)M個(gè)進(jìn)程的進(jìn)程類型信息,識(shí)別出M個(gè)進(jìn)程中的N個(gè)非系統(tǒng)應(yīng)用進(jìn)程,N為小于或等于M的正整數(shù);
S103、根據(jù)N個(gè)非系統(tǒng)應(yīng)用進(jìn)程的進(jìn)程優(yōu)先級(jí)信息,識(shí)別出N個(gè)非系統(tǒng)應(yīng)用進(jìn)程中的前臺(tái)運(yùn)行應(yīng)用進(jìn)程。
需要說(shuō)明的是,在本發(fā)明實(shí)施例中,針對(duì)不同的進(jìn)程,所對(duì)應(yīng)的進(jìn)程類型信息為背景進(jìn)程、非應(yīng)用進(jìn)程、系統(tǒng)應(yīng)用進(jìn)程、非系統(tǒng)應(yīng)用進(jìn)程中的一種。不同的進(jìn)程所對(duì)應(yīng)的進(jìn)程優(yōu)先級(jí)信息與進(jìn)程對(duì)資源占用量相關(guān),具體為占用內(nèi)存資源越高,得分越高;cpu時(shí)間和存活時(shí)間越高,得分越低;得分越低,進(jìn)程優(yōu)先級(jí)越高。
下面結(jié)合圖1,對(duì)本發(fā)明實(shí)施例提供的應(yīng)用操作監(jiān)測(cè)方法每個(gè)步驟進(jìn)行詳細(xì)描述:
首先,執(zhí)行S101:從運(yùn)行進(jìn)程目錄中獲取正在運(yùn)行的M個(gè)進(jìn)程的進(jìn)程信息,進(jìn)程信息包括進(jìn)程類型信息和進(jìn)程優(yōu)先級(jí)信息,M為正整數(shù)。
具體的,運(yùn)行進(jìn)程目錄下的各個(gè)文件夾以數(shù)字命名,命名的數(shù)字為進(jìn)程的唯一標(biāo)識(shí)。具體,進(jìn)程的唯一標(biāo)識(shí)可以為進(jìn)程的PID(Process Identification,進(jìn)程標(biāo)識(shí)),文件夾下的文件包含該P(yáng)ID所標(biāo)識(shí)進(jìn)程的進(jìn)程信息,從運(yùn)行進(jìn)程目錄下的文件夾中獲得當(dāng)前正在運(yùn)行進(jìn)程的進(jìn)程信息。
具體的,通過(guò)進(jìn)程的唯一標(biāo)識(shí)來(lái)獲取進(jìn)程信息,具體實(shí)施過(guò)程為:在運(yùn)行進(jìn)程目錄的路徑下創(chuàng)建以運(yùn)行進(jìn)程目錄為傳入?yún)?shù)的文件對(duì)象;獲取文件對(duì)象的目錄下的M個(gè)文件;將M個(gè)文件的文件名對(duì)應(yīng)確定為M個(gè)進(jìn)程的唯一標(biāo)識(shí);獲取M個(gè)進(jìn)程的唯一標(biāo)識(shí)的子目錄下信息為M個(gè)進(jìn)程的進(jìn)程類型信息和進(jìn)程優(yōu)先級(jí)信息。
以linux內(nèi)核的系統(tǒng)為例,運(yùn)行進(jìn)程目錄為/proc,首先通過(guò)/proc路徑創(chuàng)建一個(gè)File對(duì)象;然后,將運(yùn)行進(jìn)程目錄/proc作為File對(duì)象的參數(shù)傳入;接著,調(diào)用File對(duì)象的listFiles代碼,以獲取File對(duì)象的目錄下的M個(gè)文件;再接著,調(diào)用getName獲取M個(gè)文件的文件名,M個(gè)文件的文件名為M個(gè)進(jìn)程的進(jìn)程標(biāo)識(shí);最后,獲取M個(gè)進(jìn)程的唯一標(biāo)識(shí)的子目錄下信息為M個(gè)進(jìn)程的進(jìn)程類型信息和進(jìn)程優(yōu)先級(jí)信息。
本領(lǐng)域技術(shù)人員根據(jù)對(duì)linux內(nèi)核的系統(tǒng)的舉例能夠知曉其他內(nèi)核的系統(tǒng)下如何獲取正在運(yùn)行的M個(gè)進(jìn)程的進(jìn)程信息,因此也屬于本發(fā)明意欲保護(hù)的范圍。
在S101之后,接著執(zhí)行S102:根據(jù)M個(gè)進(jìn)程的進(jìn)程類型信息,識(shí)別出M個(gè)進(jìn)程中的N個(gè)非系統(tǒng)應(yīng)用進(jìn)程,N為小于或等于M的正整數(shù)。
具體的,進(jìn)程類型信息表征進(jìn)程的類型,具體表征屬于背景進(jìn)程、非應(yīng)用進(jìn)程、系統(tǒng)應(yīng)用進(jìn)程、非系統(tǒng)應(yīng)用進(jìn)程中的一種。
在本發(fā)明一實(shí)施例中,S102包括:從M個(gè)進(jìn)程中排除進(jìn)程類型信息符合如下任一種字段的進(jìn)程,以得到N個(gè)非系統(tǒng)應(yīng)用進(jìn)程:背景進(jìn)程標(biāo)識(shí)字段、非應(yīng)用進(jìn)程標(biāo)識(shí)字段、系統(tǒng)應(yīng)用標(biāo)識(shí)碼段。
在本發(fā)明實(shí)施例中,背景進(jìn)程標(biāo)識(shí)字段表征進(jìn)程為背景進(jìn)程,比如下載服務(wù)進(jìn)程、更新服務(wù)進(jìn)程。非應(yīng)用進(jìn)程標(biāo)識(shí)字段表征進(jìn)程不是app進(jìn)程。系統(tǒng)應(yīng)用標(biāo)識(shí)碼段表征進(jìn)程為系統(tǒng)應(yīng)用進(jìn)程,比如,工具應(yīng)用進(jìn)程。
具體的,通過(guò)運(yùn)行進(jìn)程目錄下的控制組群文件中的信息從M個(gè)進(jìn)程中識(shí)別出N個(gè)非系統(tǒng)應(yīng)用進(jìn)程。
下面,給出以循環(huán)步驟依次對(duì)M個(gè)進(jìn)程的控制組群文件中的信息進(jìn)行識(shí)別,參考圖2,以依次識(shí)別M個(gè)進(jìn)程是否為非系統(tǒng)應(yīng)用進(jìn)程:
S1021、識(shí)別M個(gè)進(jìn)程中的第m個(gè)進(jìn)程的控制組群文件是否包含背景進(jìn)程標(biāo)識(shí)字段,m依次為1至M;
S1022、如果第m個(gè)進(jìn)程的控制組群文件包含背景進(jìn)程標(biāo)識(shí)字段,排除第m個(gè)進(jìn)程,否則識(shí)別第m個(gè)進(jìn)程的控制組群文件是否包含非應(yīng)用進(jìn)程標(biāo)識(shí)字段;
S1023、如果第m個(gè)進(jìn)程的控制組群文件包含非應(yīng)用進(jìn)程標(biāo)識(shí)字段,排除第m個(gè)進(jìn)程,否則識(shí)別第m個(gè)進(jìn)程的控制組群文件中的應(yīng)用標(biāo)識(shí)碼是否在預(yù)設(shè)碼段內(nèi);
S1024、如果第m個(gè)進(jìn)程的控制組群文件中的應(yīng)用標(biāo)識(shí)碼在預(yù)設(shè)碼段內(nèi),排除第m個(gè)進(jìn)程。
下面以linux內(nèi)核的系統(tǒng)為例,針對(duì)第m個(gè)進(jìn)程進(jìn)行識(shí)別是否為前臺(tái)非系統(tǒng)應(yīng)用進(jìn)程的過(guò)程進(jìn)行舉例說(shuō)明:
步驟a、獲取運(yùn)行進(jìn)程目錄下第m個(gè)進(jìn)程的控制組群文件cgroup。
步驟b、識(shí)別第m個(gè)進(jìn)程的控制組群文件中第一行是否包含字段。bg_non_interactive,如果第一行包含字段:bg_non_interactive,表征第m個(gè)進(jìn)程為背景進(jìn)程,則排除第m個(gè)進(jìn)程,否則執(zhí)行步驟c。
步驟c、在第m個(gè)進(jìn)程的控制組群文件的第二行識(shí)別第m個(gè)進(jìn)程的唯一標(biāo)識(shí)別字符串。
步驟d、判斷第m個(gè)進(jìn)程的唯一標(biāo)識(shí)別字符串是否以指定字符串結(jié)尾,如果是,表征第m個(gè)進(jìn)程為非應(yīng)用進(jìn)程,則排除第m個(gè)進(jìn)程,否則執(zhí)行步驟e。
步驟e、讀取第m個(gè)進(jìn)程的控制組群文件的第二行之后的數(shù)據(jù)以讀取到第m個(gè)進(jìn)程的UID,判斷第m個(gè)進(jìn)程的UID是否在1000~1038范圍內(nèi),如果是,表征第m個(gè)進(jìn)程為系統(tǒng)應(yīng)用進(jìn)程,則排除第m個(gè)進(jìn)程,否則,確定第m個(gè)進(jìn)程為非系統(tǒng)應(yīng)用進(jìn)程。
在具體實(shí)施過(guò)程中,通過(guò)FileReader類創(chuàng)建一個(gè)用來(lái)處理讀文件操作的文件讀取對(duì)象,將創(chuàng)建的文件讀取對(duì)象作為參數(shù)創(chuàng)建一個(gè)BufferedReader對(duì)象,遍歷調(diào)用BufferedReader對(duì)象的readline方法讀到以UID字符串開頭所在一行中的數(shù)值。
在S102之后,接著執(zhí)行S103:根據(jù)N個(gè)非系統(tǒng)應(yīng)用進(jìn)程的進(jìn)程優(yōu)先級(jí)信息,識(shí)別出N個(gè)非系統(tǒng)應(yīng)用進(jìn)程中的前臺(tái)運(yùn)行應(yīng)用進(jìn)程。
在一實(shí)施例中,進(jìn)程優(yōu)先級(jí)信息為資源占用優(yōu)先級(jí),則S103的一種實(shí)施方式,參考圖3,包括:
S1031:遍歷N個(gè)非系統(tǒng)應(yīng)用進(jìn)程的資源占用優(yōu)先級(jí);
S1032:確定出N個(gè)非系統(tǒng)應(yīng)用進(jìn)程中資源占用優(yōu)先級(jí)最高的進(jìn)程為前臺(tái)運(yùn)行應(yīng)用進(jìn)程。
下面,以linux內(nèi)核的系統(tǒng)為例,對(duì)遍歷N個(gè)非系統(tǒng)應(yīng)用進(jìn)程的資源占用優(yōu)先級(jí)的過(guò)程進(jìn)行說(shuō)明:
N個(gè)非系統(tǒng)應(yīng)用進(jìn)程中每個(gè)進(jìn)程均分配有一個(gè)表明進(jìn)程的資源占用優(yōu)先級(jí)的:oom_score_adj,字段oom_score_adj中的數(shù)值為基于內(nèi)存資源占用量、CPU時(shí)間和存活時(shí)間作權(quán)重調(diào)整的值,字段oom_score_adj中的數(shù)值越小,資源占用優(yōu)先級(jí)越高。
定義一個(gè)最小分?jǐn)?shù)值變量-lowestOomScore,作為臨時(shí)最小分?jǐn)?shù)值的存儲(chǔ),對(duì)N個(gè)非系統(tǒng)應(yīng)用進(jìn)程進(jìn)行遍歷:當(dāng)?shù)趎個(gè)非系統(tǒng)應(yīng)用進(jìn)程的oom_score_adj字段中的數(shù)值小于lowestOomScore時(shí),將第n個(gè)非系統(tǒng)應(yīng)用進(jìn)程的字段o om_score_adj中的數(shù)值賦值給lowestOomScore,n依次為1至n。遍歷結(jié)束時(shí),lowestOomScore的值為當(dāng)前最小的值,當(dāng)前最小的值所對(duì)應(yīng)的非系統(tǒng)應(yīng)用進(jìn)程為前臺(tái)運(yùn)行應(yīng)用進(jìn)程,返回當(dāng)前最小的值所對(duì)應(yīng)的非系統(tǒng)應(yīng)用進(jìn)程的包名。具體的,進(jìn)程的包名存放在運(yùn)行進(jìn)程目錄下的cmdline文件中,通過(guò)FileReader代碼讀取。
本發(fā)明實(shí)施例提供的技術(shù)方案還包括:在識(shí)別出N個(gè)非系統(tǒng)應(yīng)用進(jìn)程中的前臺(tái)運(yùn)行應(yīng)用進(jìn)程之后,通過(guò)循環(huán)讀取前臺(tái)運(yùn)行應(yīng)用進(jìn)程確定用戶操作前臺(tái)運(yùn)行應(yīng)用進(jìn)程的時(shí)長(zhǎng)。在一具體實(shí)施例中,如下步驟實(shí)現(xiàn):在識(shí)別出N個(gè)非系統(tǒng)應(yīng)用進(jìn)程中的前臺(tái)運(yùn)行應(yīng)用進(jìn)程之后,按照預(yù)設(shè)周期輪詢前臺(tái)運(yùn)行應(yīng)用進(jìn)程;基于對(duì)前臺(tái)運(yùn)行應(yīng)用進(jìn)程的輪詢次數(shù)確定前臺(tái)運(yùn)行應(yīng)用進(jìn)程在前臺(tái)的停留時(shí)長(zhǎng)。
在具體實(shí)施過(guò)程中,通過(guò)后臺(tái)開啟一個(gè)服務(wù)組件來(lái)運(yùn)行按照預(yù)設(shè)周期輪詢前臺(tái)運(yùn)行應(yīng)用進(jìn)程的監(jiān)測(cè)邏輯,從而不干擾用戶的行為操作。將按照預(yù)設(shè)周期輪詢前臺(tái)運(yùn)行應(yīng)用進(jìn)程的檢測(cè)代碼放到異步線程中執(zhí)行。
當(dāng)?shù)谝淮螘r(shí)輪詢時(shí),先記錄前臺(tái)運(yùn)行應(yīng)用進(jìn)程的包名,通過(guò)System.currentTimeMillis()函數(shù)獲得第一次輪詢時(shí)的時(shí)間毫秒數(shù),比如,第一次輪詢時(shí)的時(shí)間毫秒數(shù)定義一個(gè)變量startTime,之后不停的輪詢,每次輪詢時(shí),比較本次輪詢時(shí)的前臺(tái)運(yùn)行應(yīng)用進(jìn)程的包名是否與上一次輪詢時(shí)前臺(tái)運(yùn)行應(yīng)用進(jìn)程的包名是否相同,如果相同,表征用戶在操作同一應(yīng)用進(jìn)程,反之則表明切換了前臺(tái)應(yīng)用,則記錄本次輪詢時(shí)的時(shí)間毫秒數(shù),本次輪詢的時(shí)間毫秒數(shù)可以定義為變量changeTime,本次輪詢的時(shí)間毫秒數(shù)與第一次輪詢時(shí)的時(shí)間毫秒數(shù)之差為前臺(tái)運(yùn)行應(yīng)用進(jìn)程在前臺(tái)的停留時(shí)長(zhǎng)。
進(jìn)一步的,為計(jì)算下一個(gè)切換至前臺(tái)的應(yīng)用進(jìn)程在前臺(tái)的停留時(shí)長(zhǎng),本次輪詢時(shí)前臺(tái)運(yùn)行應(yīng)用進(jìn)程時(shí)的包名與上一次輪詢前臺(tái)運(yùn)行應(yīng)用進(jìn)程的包名不相同時(shí),將本次論詢時(shí)的時(shí)間毫秒數(shù)作為下一個(gè)切換至前臺(tái)運(yùn)行的應(yīng)用進(jìn)程第一次輪詢時(shí)的時(shí)間毫秒數(shù)。
在具體實(shí)施過(guò)程中,預(yù)設(shè)周期可以根據(jù)需要設(shè)置為1秒、0.9毫秒、0.8毫秒、0.7毫秒、0.6毫秒、0.5毫秒、0.4毫秒。
通過(guò)本實(shí)施例能夠監(jiān)測(cè)到各個(gè)切換至前臺(tái)運(yùn)行的非系統(tǒng)應(yīng)用進(jìn)程在前臺(tái)的停留時(shí)長(zhǎng)。
進(jìn)一步的,在本發(fā)明實(shí)施例中,在基于對(duì)前臺(tái)運(yùn)行應(yīng)用進(jìn)程的輪詢次數(shù)確定前臺(tái)運(yùn)行應(yīng)用進(jìn)程在前臺(tái)的停留時(shí)長(zhǎng)之后,還包括:判斷前臺(tái)運(yùn)行應(yīng)用進(jìn)程在前臺(tái)的停留時(shí)長(zhǎng)是否超過(guò)預(yù)設(shè)時(shí)長(zhǎng);如果前臺(tái)運(yùn)行應(yīng)用進(jìn)程在前臺(tái)的停留時(shí)長(zhǎng)超過(guò)預(yù)設(shè)時(shí)長(zhǎng),向用戶推送與前臺(tái)運(yùn)行應(yīng)用進(jìn)程相關(guān)的可讀內(nèi)容。
預(yù)設(shè)時(shí)長(zhǎng)根據(jù)實(shí)際需求進(jìn)行設(shè)置,比如,可以設(shè)置為5分鐘,6分鐘,7分鐘、8分鐘、10分鐘等等。
具體的,比如,前臺(tái)運(yùn)行應(yīng)用進(jìn)程為直播視頻應(yīng)用進(jìn)程,推送的可讀內(nèi)容為直播間信息或者直播間鏈接。比如,前臺(tái)運(yùn)行應(yīng)用進(jìn)程為購(gòu)物應(yīng)用進(jìn)程,推送的可讀內(nèi)容為商品信息。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供了一種應(yīng)用操作監(jiān)測(cè)裝置,參考圖4所示,包括如下功能模塊:
進(jìn)程信息獲取模塊201,用于從運(yùn)行進(jìn)程目錄中獲取正在運(yùn)行的M個(gè)進(jìn)程的進(jìn)程信息,所述進(jìn)程信息包括進(jìn)程類型信息和進(jìn)程優(yōu)先級(jí)信息,M為正整數(shù);
非系統(tǒng)應(yīng)用進(jìn)程識(shí)別模塊202,用于根據(jù)所述M個(gè)進(jìn)程的進(jìn)程類型信息,識(shí)別出所述M個(gè)進(jìn)程中的N個(gè)非系統(tǒng)應(yīng)用進(jìn)程,N為小于或等于M的正整數(shù);
前臺(tái)應(yīng)用進(jìn)程識(shí)別模塊203,用于根據(jù)所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程的進(jìn)程優(yōu)先級(jí)信息,識(shí)別出所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程中的前臺(tái)運(yùn)行應(yīng)用進(jìn)程。
優(yōu)選的,所述進(jìn)程信息獲取模塊201,包括:
創(chuàng)建單元,用于在所述運(yùn)行進(jìn)程目錄的路徑下創(chuàng)建以所述運(yùn)行進(jìn)程目錄為傳入?yún)?shù)的文件對(duì)象;
文件獲取單元,用于獲取所述文件對(duì)象的目錄下的M個(gè)文件;
確定單元,用于將所述M個(gè)文件的文件名對(duì)應(yīng)確定為所述M個(gè)進(jìn)程的唯一標(biāo)識(shí);
進(jìn)程信息獲取單元,用于獲取所述M個(gè)進(jìn)程的唯一標(biāo)識(shí)的子目錄下信息為所述M個(gè)進(jìn)程的進(jìn)程信息。
優(yōu)選的,所述非系統(tǒng)應(yīng)用進(jìn)程識(shí)別模塊202,包括:
排除單元,用于從所述M個(gè)進(jìn)程中排除所述進(jìn)程類型信息符合如下任一種字段的進(jìn)程,以得到所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程:
背景進(jìn)程標(biāo)識(shí)字段、非應(yīng)用進(jìn)程標(biāo)識(shí)字段、系統(tǒng)應(yīng)用標(biāo)識(shí)碼段。
優(yōu)選的,所述排除單元,具體用于:
識(shí)別所述M個(gè)進(jìn)程中的第m個(gè)進(jìn)程的控制組群文件是否包含所述背景進(jìn)程標(biāo)識(shí)字段,m依次為1至M;
如果所述第m個(gè)進(jìn)程的控制組群文件包含所述背景進(jìn)程標(biāo)識(shí)字段,排除所述第m個(gè)進(jìn)程,否則識(shí)別所述第m個(gè)進(jìn)程的控制組群文件是否包含所述非應(yīng)用進(jìn)程標(biāo)識(shí)字段;
如果所述第m個(gè)進(jìn)程的控制組群文件包含所述非應(yīng)用進(jìn)程標(biāo)識(shí)字段,排除所述第m個(gè)進(jìn)程,否則識(shí)別所述第m個(gè)進(jìn)程的控制組群文件中的應(yīng)用標(biāo)識(shí)碼是否在預(yù)設(shè)碼段內(nèi);
如果所述第m個(gè)進(jìn)程的控制組群文件中的應(yīng)用標(biāo)識(shí)碼在所述預(yù)設(shè)碼段內(nèi),排除所述第m個(gè)進(jìn)程。
優(yōu)選的,所述前臺(tái)應(yīng)用進(jìn)程識(shí)別模塊203,包括:
遍歷單元,用于遍歷所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程的資源占用優(yōu)先級(jí);
前臺(tái)應(yīng)用進(jìn)程確定單元,用于確定出所述N個(gè)非系統(tǒng)應(yīng)用進(jìn)程中資源占用優(yōu)先級(jí)最高的進(jìn)程為所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程。
優(yōu)選的,所述裝置還包括:
輪詢模塊,用于按照預(yù)設(shè)周期輪詢所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程;
停留時(shí)長(zhǎng)確定模塊,用于基于對(duì)所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程的輪詢次數(shù)確定所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程在前臺(tái)的停留時(shí)長(zhǎng)。
述前臺(tái)運(yùn)行應(yīng)用進(jìn)程在前臺(tái)的停留時(shí)長(zhǎng)。
優(yōu)選的,所述裝置還包括:
判斷模塊,用戶判斷所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程在前臺(tái)的停留時(shí)長(zhǎng)是否超過(guò)預(yù)設(shè)時(shí)長(zhǎng);
推送單元,用于如果所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程在前臺(tái)的停留時(shí)長(zhǎng)超過(guò)所述預(yù)設(shè)時(shí)長(zhǎng),向用戶推送與所述前臺(tái)運(yùn)行應(yīng)用進(jìn)程相關(guān)的可讀內(nèi)容。
應(yīng)用操作監(jiān)測(cè)裝置實(shí)施例為實(shí)施應(yīng)用操作監(jiān)測(cè)方法的裝置,本領(lǐng)域技術(shù)人員能夠基于前述應(yīng)用操作監(jiān)測(cè)方法實(shí)施例知曉應(yīng)用操作監(jiān)測(cè)裝置實(shí)施例的細(xì)節(jié)及變形,為了說(shuō)明書的簡(jiǎn)潔,本文不再贅述。
通過(guò)上述本發(fā)明提供的一個(gè)或多個(gè)實(shí)施例,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
通過(guò)從運(yùn)行進(jìn)程目錄中獲取正在運(yùn)行進(jìn)程的進(jìn)程類型信息和進(jìn)程優(yōu)先級(jí)信息,根據(jù)正在運(yùn)行進(jìn)程的進(jìn)程類型信息識(shí)別出正在運(yùn)行的非系統(tǒng)應(yīng)用進(jìn)程,根據(jù)正在運(yùn)行的非系統(tǒng)應(yīng)用進(jìn)程的進(jìn)程優(yōu)先級(jí)信息識(shí)別出前臺(tái)運(yùn)行應(yīng)用進(jìn)程。從而通過(guò)運(yùn)行進(jìn)程目錄中能夠獲取到所有正在運(yùn)行的進(jìn)程,然后排除了會(huì)被誤判為前臺(tái)應(yīng)用進(jìn)程的進(jìn)程,以保留的都為應(yīng)用進(jìn)程,再?gòu)膽?yīng)用進(jìn)程的進(jìn)程優(yōu)先級(jí)信息識(shí)別前臺(tái)運(yùn)行應(yīng)用進(jìn)程,從而確保了識(shí)別前臺(tái)運(yùn)行應(yīng)用進(jìn)程的準(zhǔn)確性,進(jìn)而以準(zhǔn)確監(jiān)測(cè)用戶所操作的應(yīng)用。
進(jìn)一步的,確保了識(shí)別前臺(tái)運(yùn)行應(yīng)用進(jìn)程的準(zhǔn)確性有利于提高向用戶推送內(nèi)容的準(zhǔn)確性。
在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的各描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
在此處所提供的說(shuō)明書中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的智能攝像系統(tǒng)以及網(wǎng)絡(luò)攝像頭中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者系統(tǒng)程序(如計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
應(yīng)該注意的是,上述各實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)該將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或者步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干系統(tǒng)的單元權(quán)利要求中,這些系統(tǒng)中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。