本發(fā)明涉及媒體掃描技術(shù)領(lǐng)域,尤其涉及一種終端設(shè)備的媒體掃描方法及終端設(shè)備。
背景技術(shù):
安卓(Android)系統(tǒng)在系統(tǒng)啟動(dòng)或者插入外設(shè)存儲(chǔ)設(shè)備后,一般要對(duì)內(nèi)部或外設(shè)存儲(chǔ)設(shè)備進(jìn)行媒體掃描,并把掃描到的音視頻等媒體文件記錄到數(shù)據(jù)庫,進(jìn)而以一種統(tǒng)一的形式提供給其它應(yīng)用(比如音樂播放器、視頻播放器等)。
隨著存儲(chǔ)技術(shù)的發(fā)展,存儲(chǔ)設(shè)備容量越來越大,可容納的目錄及媒體文件也會(huì)越來越多,相應(yīng)會(huì)造成掃描時(shí)間的增長,使媒體掃描成為一個(gè)耗時(shí)的過程。掃描過程高速的計(jì)算又占用了較多的中央處理單元(Central Processing Unit,簡稱CPU)資源,如果掃描過程存在其他耗費(fèi)資源的任務(wù)則會(huì)出現(xiàn)CPU使用率較高的情況,從而導(dǎo)致系統(tǒng)負(fù)載較高而運(yùn)行緩慢。另外如果在掃描過程中出現(xiàn)頻繁的與媒體掃描競(jìng)爭(zhēng)性的文件內(nèi)容的讀取操作請(qǐng)求,也會(huì)由于I/O瓶頸等無法及時(shí)響應(yīng)用戶的操作請(qǐng)求。這些情況都可能會(huì)造成響應(yīng)緩慢或無響應(yīng)情況的出現(xiàn),用戶體驗(yàn)較差。
因此,現(xiàn)有技術(shù)的問題是,目前媒體掃描過程資源占用較多造成系統(tǒng)運(yùn)行緩慢,可能無法及時(shí)響應(yīng)處理前端各種請(qǐng)求。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種終端設(shè)備的媒體掃描方法及終端設(shè)備,以克服現(xiàn)有技術(shù)中媒體掃描過程資源占用較多造成系統(tǒng)運(yùn)行緩慢,可能無法及時(shí)響應(yīng)處理前端各種請(qǐng)求的問題。
第一方面,本發(fā)明提供一種終端設(shè)備的媒體掃描方法,包括:
在進(jìn)行媒體掃描時(shí),獲取所述終端設(shè)備的中央處理器CPU的使用率;
若所述CPU的使用率等于或大于預(yù)設(shè)的使用率閾值,則暫停媒體掃描。
可選地,獲取所述終端設(shè)備的中央處理器CPU的使用率之后,所述方法還包括:
記錄獲取時(shí)間;
根據(jù)所述CPU的使用率計(jì)算等待時(shí)長;
相應(yīng)的,暫停媒體掃描之后,所述方法還包括:
在當(dāng)前時(shí)間與所述獲取時(shí)間的間隔超過所述等待時(shí)長時(shí),獲取所述CPU的使用率;
若所述CPU的使用率小于所述預(yù)設(shè)的使用率閾值,則重新開始媒體掃描。
可選地,獲取所述終端設(shè)備的中央處理器CPU的使用率,包括:
根據(jù)所述CPU在第一預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長和空閑時(shí)長,以及第二預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長和空閑時(shí)長,獲取所述CPU的使用率;
其中,所述第二預(yù)設(shè)時(shí)間間隔為所述第一預(yù)設(shè)時(shí)間間隔的前一個(gè)預(yù)設(shè)時(shí)間間隔;所述第二預(yù)設(shè)時(shí)間間隔等于所述第一預(yù)設(shè)時(shí)間間隔。
可選地,根據(jù)所述CPU在第一預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長和空閑時(shí)長,以及第二預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長和空閑時(shí)長,獲取所述CPU的使用率,具體包括:
通過如下公式(1)獲取所述CPU的使用率;
Load=(Busy-sBusy)/((Busy+Idle)-(sBusy+sIdle))×100(1);
其中,Load表示所述CPU的使用率;
Busy表示所述第一預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長,Idle表示所述第一預(yù)設(shè)時(shí)間間隔內(nèi)的空閑時(shí)長;
sBusy表示所述第二預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長,sIdle表示所述第二預(yù)設(shè)時(shí)間間隔內(nèi)的空閑時(shí)長。
可選地,根據(jù)所述CPU的使用率計(jì)算等待時(shí)長,包括:
通過如下公式(2)計(jì)算所述等待時(shí)長;
Delay=100+(Load/2)×(Load/2)(2);
其中,Delay表示所述等待時(shí)長。
可選地,所述方法還包括:
監(jiān)測(cè)是否有用戶操作請(qǐng)求;
若所述CPU的使用率小于所述預(yù)設(shè)的使用率閾值,且監(jiān)測(cè)到有用戶操作請(qǐng)求,則暫停媒體掃描。
可選地,監(jiān)測(cè)到有用戶操作請(qǐng)求之后,所述方法還包括:
記錄監(jiān)測(cè)時(shí)間;
相應(yīng)的,暫停媒體掃描之后,所述方法還包括:
在當(dāng)前時(shí)間與所述監(jiān)測(cè)時(shí)間的間隔超過預(yù)設(shè)的時(shí)間間隔閾值時(shí),監(jiān)測(cè)是否有用戶操作請(qǐng)求;
若監(jiān)測(cè)到無用戶操作請(qǐng)求,則重新開始媒體掃描。
第二方面,本發(fā)明提供一種終端設(shè)備,包括:
獲取模塊,用于在進(jìn)行媒體掃描時(shí),獲取所述終端設(shè)備的中央處理器CPU的使用率;
處理模塊,用于若所述CPU的使用率等于或大于預(yù)設(shè)的使用率閾值,則暫停媒體掃描。
可選地,所述獲取模塊具體用于:
通過如下公式(1)獲取所述CPU的使用率;
Load=(Busy-sBusy)/((Busy+Idle)-(sBusy+sIdle))×100 (1);
其中,Load表示所述CPU的使用率;
Busy表示所述第一預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長,Idle表示所述第一預(yù)設(shè)時(shí)間間隔內(nèi)的空閑時(shí)長;
sBusy表示所述第二預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長,sIdle表示所述第二預(yù)設(shè)時(shí)間間隔內(nèi)的空閑時(shí)長。
可選地,所述計(jì)算模塊具體用于:
通過如下公式(2)計(jì)算所述等待時(shí)長;
Delay=100+(Load/2)×(Load/2) (2);
其中,Delay表示所述等待時(shí)長。
可選地,還包括:
監(jiān)測(cè)模塊,用于監(jiān)測(cè)是否有用戶操作請(qǐng)求;
所述處理模塊,還用于若所述CPU的使用率小于所述預(yù)設(shè)的使用率閾值,且監(jiān)測(cè)到有用戶操作請(qǐng)求,則暫停媒體掃描。
可選地,所述記錄模塊,還用于在監(jiān)測(cè)到有用戶操作請(qǐng)求之后記錄監(jiān)測(cè)時(shí)間;
相應(yīng)的,所述監(jiān)測(cè)模塊,還用于:
在當(dāng)前時(shí)間與所述監(jiān)測(cè)時(shí)間的間隔超過預(yù)設(shè)的時(shí)間間隔閾值時(shí),監(jiān)測(cè)是否有用戶操作請(qǐng)求;
所述處理模塊,還用于:
若監(jiān)測(cè)到無用戶操作請(qǐng)求,則重新開始媒體掃描。
本發(fā)明終端設(shè)備的媒體掃描方法及終端設(shè)備,在媒體掃描過程中,監(jiān)控CPU的使用率,如果出現(xiàn)CPU的使用率等于或大于預(yù)設(shè)的使用率閾值,說明此時(shí)CPU資源使用過高則自動(dòng)暫停媒體掃描,使媒體掃描進(jìn)入等待狀態(tài),減少媒體掃描對(duì)系統(tǒng)負(fù)載的占用,從而降低了對(duì)前端用戶操作的影響。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明終端設(shè)備的媒體掃描方法一實(shí)施例的流程示意圖;
圖2為本發(fā)明終端設(shè)備一實(shí)施例的結(jié)構(gòu)示意圖;
圖3為本發(fā)明終端設(shè)備另一實(shí)施例的結(jié)構(gòu)示意圖。
具體實(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ù)的范圍。
媒體掃描是與多媒體相關(guān)的一項(xiàng)重要功能,媒體掃描為諸如音頻播放器等應(yīng)用提供便利,豐富了這些應(yīng)用的功能,增強(qiáng)了用戶體驗(yàn)。但媒體掃描本身也存在一定的限制:
1.掃描時(shí)間。由于掃描過程中要遍歷整個(gè)外設(shè)文件系統(tǒng)以完成媒體文件的過濾,外設(shè)文件的多少直接影響掃描時(shí)間,尤其是隨著外設(shè)容量的增大,容納文件越來越多,增加了掃描時(shí)間。
2.系統(tǒng)性能。掃描功能對(duì)系統(tǒng)性能也會(huì)造成影響,掃描過程中需要CPU以較大的負(fù)載運(yùn)轉(zhuǎn)。
另外,如果存在定制化掃描功能,如在掃描同時(shí)增加諸如媒體文件元數(shù)據(jù)(metadata)信息,視頻、圖片縮略圖等功能,該功能一方面進(jìn)一步增加了掃描時(shí)間和系統(tǒng)負(fù)載;另一方面視頻、圖片縮略圖獲取與播放都需要解碼器資源,由于絕大多數(shù)平臺(tái)只能同時(shí)支持一路解碼器資源,因此如果在掃描過程中用戶選擇播放媒體文件,則可能存在資源沖突影響用戶媒體播放體驗(yàn)。
針對(duì)掃描時(shí)間過長的問題,大多采用多線程技術(shù)加快掃描速度,但是多線程本身又增加了掃描期間的系統(tǒng)負(fù)載。如果在掃描過程中用戶操控系統(tǒng),極易由于系統(tǒng)性能問題造成響應(yīng)用戶請(qǐng)求速度變慢,甚至出現(xiàn)應(yīng)用程序無響應(yīng)(Application Not Responding,簡稱ANR)問題,影響用戶體驗(yàn)。
本發(fā)明實(shí)施例的方法,旨在解決現(xiàn)有技術(shù)中媒體掃描過程資源占用較多造成系統(tǒng)運(yùn)行緩慢,可能無法及時(shí)響應(yīng)處理前端各種請(qǐng)求的問題。
本發(fā)明實(shí)施例中涉及到的終端設(shè)備包括但不限于智能電視、智能手機(jī)等智能終端設(shè)備。
下面以具體地實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明。下面這幾個(gè)具體的實(shí)施例可以相互結(jié)合,對(duì)于相同或相似的概念或過程可能在某些實(shí)施例不再贅述。
圖1為本發(fā)明終端設(shè)備的媒體掃描方法一實(shí)施例的流程示意圖。如圖1所示,本實(shí)施例的方法,包括:
步驟101、在進(jìn)行媒體掃描時(shí),獲取終端設(shè)備的中央處理器CPU的使用率;
步驟102、若CPU的使用率等于或大于預(yù)設(shè)的使用率閾值,則暫停媒體掃描。
具體的,由于媒體掃描是一個(gè)非常耗時(shí)的過程,而且媒體掃描過程中高速的計(jì)算又占用了較大的CPU資源,如果媒體掃描過程存在其他耗費(fèi)資源的任務(wù)則會(huì)出現(xiàn)CPU使用率較高的情況,從而導(dǎo)致系統(tǒng)負(fù)載較高而運(yùn)行緩慢。另外如果在媒體掃描過程中出現(xiàn)頻繁的用戶操作請(qǐng)求,由于系統(tǒng)負(fù)載較高可能無法及時(shí)響應(yīng)前端用戶的操作請(qǐng)求,影響用戶體驗(yàn)。而且媒體掃描作為一種后臺(tái)服務(wù),并不像前端操作那樣必須具有較高的響應(yīng)度,因此可以在CPU資源使用率較高時(shí)和/或存在用戶操作請(qǐng)求時(shí)做短時(shí)的暫停處理。
本實(shí)施例中,在進(jìn)行媒體掃描時(shí),可以實(shí)時(shí)或者周期性的獲取所述終端設(shè)備的中央處理器CPU的使用率;若CPU的使用率等于或大于預(yù)設(shè)的使用率閾值,則暫停媒體掃描。例如預(yù)設(shè)的使用率閾值為80%,當(dāng)CPU的使用率等于或大于80%時(shí),說明此時(shí)系統(tǒng)負(fù)載較高,需要暫停媒體掃描,此時(shí)媒體掃描進(jìn)入等待狀態(tài),當(dāng)CPU的使用率較低時(shí),可以在重新開始媒體掃描,使得本發(fā)明的技術(shù)方案能夠最大限度利用空閑時(shí)間完成媒體掃描。
進(jìn)一步的,在本實(shí)施例中,若CPU的使用率等于或大于預(yù)設(shè)的使用率閾值,還可以進(jìn)一步根據(jù)是否有用戶操作請(qǐng)求,判斷是否暫停媒體掃描。
具體地,若CPU的使用率等于或大于預(yù)設(shè)的使用率閾值,且有用戶操作請(qǐng)求時(shí),暫停媒體掃描。
本實(shí)施例提供的終端設(shè)備的媒體掃描方法,在媒體掃描過程中,監(jiān)控CPU的使用率,如果出現(xiàn)CPU的使用率等于或大于預(yù)設(shè)的使用率閾值,說明此時(shí)CPU資源使用過高則自動(dòng)暫停媒體掃描,使媒體掃描進(jìn)入等待狀態(tài),減少媒體掃描對(duì)系統(tǒng)負(fù)載的占用,從而降低了對(duì)前端用戶操作的影響。
在上述實(shí)施例的基礎(chǔ)上,為了能夠及時(shí)的重新開始媒體掃描,充分利用空閑時(shí)間完成媒體掃描,因此在本實(shí)施例中,步驟101之后還可以進(jìn)行如下操作:
記錄獲取時(shí)間;
根據(jù)CPU的使用率計(jì)算等待時(shí)長;
相應(yīng)的,暫停媒體掃描之后,還可以進(jìn)行如下操作:
在當(dāng)前時(shí)間與獲取時(shí)間的間隔超過等待時(shí)長時(shí),獲取CPU的使用率;
若CPU的使用率小于預(yù)設(shè)的使用率閾值,則重新開始媒體掃描。
具體的,首先要記錄暫停掃描之前,獲取CPU的使用率時(shí)的獲取時(shí)間,然后根據(jù)CPU的使用率計(jì)算出等待時(shí)長,CPU的使用率越高,等待時(shí)長越長。媒體掃描在等待時(shí)長內(nèi)保持暫停,超過等待時(shí)長之后則重新根據(jù)CPU的使用率決定是否繼續(xù)等待或者重新開始媒體掃描,即若CPU的使用率等于或大于預(yù)設(shè)的使用率閾值,則繼續(xù)暫停媒體掃描。若CPU的使用率小于預(yù)設(shè)的使用率閾值,則重新開始媒體掃描。
上述實(shí)施例中,可以最大限度利用空閑時(shí)間和資源進(jìn)行媒體掃描,減輕媒體掃描對(duì)系統(tǒng)資源造成的壓力以及用戶操作的影響,保證充足的資源優(yōu)先響應(yīng)處理前端的用戶操作請(qǐng)求。
在上述實(shí)施例的基礎(chǔ)上,進(jìn)一步的,作為一種可實(shí)施的方式獲取終端設(shè)備的中央處理器CPU的使用率,具體可以采用如下方式實(shí)現(xiàn):
根據(jù)CPU在第一預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長和空閑時(shí)長,以及第二預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長和空閑時(shí)長,獲取CPU的使用率;
其中,第二預(yù)設(shè)時(shí)間間隔為第一預(yù)設(shè)時(shí)間間隔的前一個(gè)預(yù)設(shè)時(shí)間間隔;第二預(yù)設(shè)時(shí)間間隔等于第一預(yù)設(shè)時(shí)間間隔。
具體的,通過相鄰的兩個(gè)預(yù)設(shè)時(shí)間間隔內(nèi)的CPU使用的繁忙時(shí)長和空閑時(shí)長,確定CPU的使用率,繁忙時(shí)長指的是CPU的負(fù)載超過預(yù)設(shè)負(fù)載的時(shí)長,空閑時(shí)長指的是CPU的負(fù)載小于預(yù)設(shè)負(fù)載的時(shí)長。
其中,在實(shí)際應(yīng)用中,可以通過如下公式(1)獲取CPU的使用率;
Load=(Busy-sBusy)/((Busy+Idle)-(sBusy+sIdle))×100 (1);
其中,Load表示CPU的使用率;
Busy表示第一預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長,Idle表示第一預(yù)設(shè)時(shí)間間隔內(nèi)的空閑時(shí)長;
sBusy表示第二預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長,sIdle表示第二預(yù)設(shè)時(shí)間間隔內(nèi)的空閑時(shí)長。
具體的,CPU的使用率等于:相鄰兩個(gè)預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長的差值,與,相鄰兩個(gè)預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長和空閑時(shí)長的差值的比值,繁忙時(shí)長的差值在繁忙時(shí)長和空閑時(shí)長的差值中所占的比值越大,則CPU的使用率越大。
在上述實(shí)施例的基礎(chǔ)上,進(jìn)一步,可選的,根據(jù)CPU的使用率計(jì)算等待時(shí)長,具體可以采用如下方式實(shí)現(xiàn):
通過如下公式(2)計(jì)算等待時(shí)長;
Delay=100+(Load/2)×(Load/2) (2);
其中,Delay表示等待時(shí)長。
具體的,初始設(shè)定一個(gè)CPU的使用率閾值,如果計(jì)算出的CPU的使用率超過該使用率閾值,則認(rèn)為當(dāng)前系統(tǒng)較為繁忙需要暫停媒體掃描并根據(jù)公式(2)計(jì)算出需要等待的等待時(shí)長,CPU的使用率越大,等待時(shí)長越長。
在上述實(shí)施例的基礎(chǔ)上,進(jìn)一步的,本實(shí)施例的方法還可以包括如下步驟:
監(jiān)測(cè)是否有用戶操作請(qǐng)求;
若CPU的使用率小于預(yù)設(shè)的使用率閾值,且監(jiān)測(cè)到有用戶操作請(qǐng)求,則暫停媒體掃描。
具體的,在本實(shí)施例中,若CPU的使用率小于預(yù)設(shè)的使用率閾值,還可以進(jìn)一步根據(jù)是否有用戶操作請(qǐng)求,判斷是否暫停媒體掃描,當(dāng)CPU的使用率小于預(yù)設(shè)的使用率閾值,且監(jiān)測(cè)到有用戶操作請(qǐng)求,為了盡量減少對(duì)用戶操作請(qǐng)求的影響,可以暫停媒體掃描。
本實(shí)施例提供的終端設(shè)備的媒體掃描方法,在媒體掃描過程中,監(jiān)控CPU的使用率以及監(jiān)控是否有用戶操作請(qǐng)求,如果出現(xiàn)CPU的使用率小于預(yù)設(shè)的使用率閾值,且監(jiān)測(cè)到有用戶操作請(qǐng)求,暫停媒體掃描,使媒體掃描進(jìn)入等待狀態(tài),從而降低了對(duì)前端用戶操作的影響。
進(jìn)一步,可選的,監(jiān)測(cè)到有用戶操作請(qǐng)求之后,還可以包括如下步驟:
記錄監(jiān)測(cè)時(shí)間;
相應(yīng)的,暫停媒體掃描之后,還可以包括如下步驟:
在當(dāng)前時(shí)間與監(jiān)測(cè)時(shí)間的間隔超過預(yù)設(shè)的時(shí)間間隔閾值時(shí),監(jiān)測(cè)是否有用戶操作請(qǐng)求;
若監(jiān)測(cè)到無用戶操作請(qǐng)求,則重新開始媒體掃描。
具體的,在本實(shí)施例中,對(duì)于媒體掃描期間出現(xiàn)用戶請(qǐng)求操作的情況,在監(jiān)測(cè)到有用戶操作請(qǐng)求時(shí),記錄監(jiān)測(cè)時(shí)間,可以預(yù)先設(shè)定一個(gè)時(shí)間間隔閾值,在當(dāng)前時(shí)間與監(jiān)測(cè)時(shí)間的間隔超過預(yù)設(shè)的時(shí)間間隔閾值時(shí),進(jìn)一步判斷是否暫停媒體掃描,例如超過預(yù)設(shè)的時(shí)間間隔閾值后,無用戶操作請(qǐng)求,則重新開始媒體掃描,或者有用戶操作請(qǐng)求,則繼續(xù)暫停媒體掃描。
進(jìn)一步的,在超過預(yù)設(shè)的時(shí)間間隔閾值后,無用戶操作請(qǐng)求時(shí),還可以判斷此時(shí)的CPU的使用率是否小于預(yù)設(shè)的使用率閾值,若小于則重新開始媒體掃描,否則繼續(xù)暫停媒體掃描。
下面以一個(gè)具體的實(shí)施例對(duì)上述方法進(jìn)行詳細(xì)闡述:
本發(fā)明實(shí)施例的整個(gè)處理流程可以通過3個(gè)相對(duì)獨(dú)立的模塊實(shí)現(xiàn):掃描模塊,控制模塊(ThrottleUtil模塊),輸入監(jiān)測(cè)(Input Monitoring)模塊。
掃描模塊負(fù)責(zé)掃描終端設(shè)備內(nèi)的媒體文件(該模塊可以是android原生模塊或者是定制化的掃描模塊,本發(fā)明實(shí)施例中可以使用定制化的媒體掃描功能)。在設(shè)備掛載之后,掃描模塊會(huì)收到設(shè)備掛載信息的廣播消息并啟動(dòng)媒體掃描。在啟動(dòng)媒體掃描之前,首先通過ThrottleUtil模塊開啟CPU使用率和用戶操作請(qǐng)求的監(jiān)測(cè)。在每掃描完一個(gè)子目錄或者一個(gè)媒體項(xiàng)目之后主動(dòng)通過ThrottleUtil模塊檢查是否存在CPU的使用率較高或用戶請(qǐng)求操作以暫停掃描。
ThrottleUtil模塊用于啟動(dòng)CPU的使用率和用戶操作請(qǐng)求的監(jiān)測(cè)。監(jiān)測(cè)方法開啟之后一方面每隔一段時(shí)間讀取/proc/stat/目錄下的虛擬文件信息獲取CPU的相關(guān)信息(如一預(yù)設(shè)間隔內(nèi)的CPU使用的繁忙時(shí)長和空閑時(shí)長),根據(jù)獲取的CPU的相關(guān)信息通過上述實(shí)施例中的計(jì)算出CPU的使用率。初始設(shè)定一個(gè)CPU的使用率閾值,如果計(jì)算出的CPU的使用率超過該使用率閾值,則認(rèn)為當(dāng)前系統(tǒng)較為繁忙需要暫停媒體掃描并根據(jù)上述實(shí)施例中的規(guī)則計(jì)算出需要等待的等待時(shí)長;另一方面與Input Monitoring模塊以Binder方式建立連接,并將相關(guān)參數(shù)包括監(jiān)聽請(qǐng)求類型(如監(jiān)聽按鍵操作等)、時(shí)間間隔閾值、請(qǐng)求結(jié)果返回通知方式(廣播類型參數(shù))傳遞給Input Monitoring模塊。ThrottleUtil模塊可以接收Input Monitoring發(fā)送的當(dāng)前有用戶操作請(qǐng)求和超過時(shí)間閾值之后發(fā)送的無用戶操作請(qǐng)求的消息通知。當(dāng)收到Input Monitoring發(fā)送的當(dāng)前有用戶操作請(qǐng)求通知時(shí)記錄該消息以便暫停掃描。
ThrottleUtil模塊還可以提供另一方法用來實(shí)現(xiàn)暫停媒體掃描,該方法根據(jù)是否存在用戶操作請(qǐng)求和CPU的使用情況來決定是否暫停媒體掃描。該方法帶有一個(gè)影響因子,通過該影響因子和CPU使用情況計(jì)算出的等待時(shí)長,最終決定需要暫停的時(shí)間。
具體的,當(dāng)存在用戶操作請(qǐng)求或者CPU使用率較高的情況則暫停媒體掃描,使掃描模塊進(jìn)入等待狀態(tài),釋放媒體掃描占用的系統(tǒng)資源。當(dāng)媒體掃描處于暫停狀態(tài),ThrottleUtil模塊收到超過時(shí)間間隔閾值無用戶操作請(qǐng)求的通知或者由于CPU繁忙暫停超過等待時(shí)長,則重新監(jiān)測(cè)。如果既不存在用戶請(qǐng)求操作和CPU使用率較高的情況,則喚醒掃描線程繼續(xù)媒體掃描,否則根據(jù)CPU使用率重新計(jì)算的暫停時(shí)間繼續(xù)保持暫停狀態(tài)。
例如,等待時(shí)長和時(shí)間間隔閾值可以通過前一次監(jiān)測(cè)的數(shù)值和影響因子計(jì)算得到,如第一次監(jiān)測(cè)的等待時(shí)長為5s,在影響因子較大的情況下,則第二次監(jiān)測(cè)到CPU使用率較高時(shí),當(dāng)前的等待時(shí)長可以為影響因子乘以前一次的等待時(shí)長
其中,影響因子也可以變化,如果連續(xù)幾次監(jiān)測(cè)CPU使用率均較高,則影響因子可以變大,反之亦然。
上述CPU使用率較高指的均為超過預(yù)設(shè)的使用率閾值。
Input Monitoring模塊是一個(gè)服務(wù)模塊,運(yùn)行在窗口管理服務(wù)(window manger service)進(jìn)程中。該Input Monitoring模塊一方面可以在系統(tǒng)層截獲用戶操作請(qǐng)求,包括按鍵操作,點(diǎn)擊觸摸操作等。另一方面通過binder方式接收ThrottleUtil模塊發(fā)送的對(duì)用戶操作請(qǐng)求的監(jiān)聽處理請(qǐng)求,根據(jù)監(jiān)聽請(qǐng)求對(duì)截獲的用戶操作請(qǐng)求進(jìn)行處理,并根據(jù)ThrottleUtil模塊的要求將是否有用戶操作請(qǐng)求的結(jié)果進(jìn)行反饋通知。具體處理流程可以為,若較小的時(shí)間間隔內(nèi)連續(xù)接收到用戶普通的按鍵操作,則認(rèn)為用戶處在操作繁忙期,向ThrottleUtil模塊發(fā)送有用戶操作請(qǐng)求的通知;若在一預(yù)設(shè)時(shí)長內(nèi)無用戶按鍵操作,則向ThrottleUtil發(fā)送無用戶操作請(qǐng)求的通知。
圖2為本發(fā)明終端設(shè)備一實(shí)施例的結(jié)構(gòu)示意圖。如圖2所示,本實(shí)施例的終端設(shè)備,包括:
獲取模塊201和處理模塊202;
其中,獲取模塊201,用于在進(jìn)行媒體掃描時(shí),獲取所述終端設(shè)備的中央處理器CPU的使用率;
處理模塊202,用于若所述CPU的使用率等于或大于預(yù)設(shè)的使用率閾值,則暫停媒體掃描。
可選地,作為一種可實(shí)施的方式,終端設(shè)備的媒體掃描裝置,還可以包括:
記錄模塊,用于在獲取到所述終端設(shè)備的中央處理器CPU的使用率之后記錄獲取時(shí)間;
計(jì)算模塊,用于根據(jù)所述CPU的使用率計(jì)算等待時(shí)長;
相應(yīng)的,所述獲取模塊201還用于:
在當(dāng)前時(shí)間與所述獲取時(shí)間的間隔超過所述等待時(shí)長時(shí),獲取所述CPU的使用率;
所述處理模塊202,還用于:
若所述CPU的使用率小于所述預(yù)設(shè)的使用率閾值,則重新開始媒體掃描。
可選地,作為一種可實(shí)施的方式,所述獲取模塊201具體用于:
根據(jù)所述CPU在第一預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長和空閑時(shí)長,以及第二預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長和空閑時(shí)長,獲取所述CPU的使用率;
其中,所述第二預(yù)設(shè)時(shí)間間隔為所述第一預(yù)設(shè)時(shí)間間隔的前一個(gè)預(yù)設(shè)時(shí)間間隔;所述第二預(yù)設(shè)時(shí)間間隔等于所述第一預(yù)設(shè)時(shí)間間隔。
可選地,作為一種可實(shí)施的方式,所述獲取模塊201具體用于:
通過如下公式(1)獲取所述CPU的使用率;
Load=(Busy-sBusy)/((Busy+Idle)-(sBusy+sIdle))×100 (1);
其中,Load表示所述CPU的使用率;
Busy表示所述第一預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長,Idle表示所述第一預(yù)設(shè)時(shí)間間隔內(nèi)的空閑時(shí)長;
sBusy表示所述第二預(yù)設(shè)時(shí)間間隔內(nèi)的繁忙時(shí)長,sIdle表示所述第二預(yù)設(shè)時(shí)間間隔內(nèi)的空閑時(shí)長。
可選地,作為一種可實(shí)施的方式,所述計(jì)算模塊具體用于:
通過如下公式(2)計(jì)算所述等待時(shí)長;
Delay=100+(Load/2)×(Load/2) (2);
其中,Delay表示所述等待時(shí)長。
可選地,作為一種可實(shí)施的方式,終端設(shè)備的媒體掃描裝置,還可以包括:
監(jiān)測(cè)模塊,用于監(jiān)測(cè)是否有用戶操作請(qǐng)求;
所述處理模塊202,還用于若所述CPU的使用率小于所述預(yù)設(shè)的使用率閾值,且監(jiān)測(cè)到有用戶操作請(qǐng)求,則暫停媒體掃描。
可選地,作為一種可實(shí)施的方式,所述記錄模塊,還用于在監(jiān)測(cè)到有用戶操作請(qǐng)求之后記錄監(jiān)測(cè)時(shí)間;
相應(yīng)的,所述監(jiān)測(cè)模塊,還用于:
在當(dāng)前時(shí)間與所述監(jiān)測(cè)時(shí)間的間隔超過預(yù)設(shè)的時(shí)間間隔閾值時(shí),監(jiān)測(cè)是否有用戶操作請(qǐng)求;
所述處理模塊202,還用于:
若監(jiān)測(cè)到無用戶操作請(qǐng)求,則重新開始媒體掃描。
本實(shí)施例的終端設(shè)備,可以用于執(zhí)行如圖1所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
圖3為本發(fā)明終端設(shè)備另一實(shí)施例的結(jié)構(gòu)示意圖。如圖3所示,本實(shí)施例的終端設(shè)備,可以包括:存儲(chǔ)器301、處理器302和通信接口303;其中,存儲(chǔ)器301,用于存儲(chǔ)程序;具體地,程序可以包括程序代碼,所述程序代碼包括計(jì)算機(jī)操作指令。存儲(chǔ)器301可能包含隨機(jī)存取存儲(chǔ)器(random access memory,簡稱RAM),也可能還包括非易失性存儲(chǔ)器(non-volatile memory),例如至少一個(gè)磁盤存儲(chǔ)器。
處理器302,用于執(zhí)行存儲(chǔ)器301存儲(chǔ)的程序,用于執(zhí)行本發(fā)明法實(shí)施例所提供的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,可參考圖1所示的方法實(shí)施例,此處不再贅述。
通信接口303,用于接收用戶操作請(qǐng)求;
上述裝置中處理模塊、獲取模塊、記錄模塊、計(jì)算模塊和監(jiān)測(cè)模塊的功能可以通過處理器302實(shí)現(xiàn)。
上述部件通過一條或多條總線進(jìn)行通信。本領(lǐng)域技術(shù)人員可以理解,圖3中示出的終端的結(jié)構(gòu)并不構(gòu)成對(duì)本發(fā)明的限定,它既可以是總線形結(jié)構(gòu),也可以是星型結(jié)構(gòu),還可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。
需要說明的是,對(duì)于終端實(shí)施例而言,由于其基本相應(yīng)于方法實(shí)施例,所以相關(guān)之處參見方法實(shí)施例的部分說明即可。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。