本發(fā)明涉及移動互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體涉及一種監(jiān)測應(yīng)用程序狀態(tài)的設(shè)備、裝置及方法。
背景技術(shù):
隨著移動互聯(lián)網(wǎng)應(yīng)用的不斷發(fā)展,用戶在智能移動終端上可以使用越來越多的應(yīng)用程序APP。而在應(yīng)用程序的開發(fā)過程中,經(jīng)常需要監(jiān)測應(yīng)用程序的前臺和后臺狀態(tài)切換的情況來實(shí)現(xiàn)某些需求。例如穩(wěn)定性的崩潰率指標(biāo)需要區(qū)分統(tǒng)計(jì)出前臺崩潰率和后臺崩潰率、統(tǒng)計(jì)出用戶每次前臺使用時長的需求;再例如后臺自動靜默下載更新應(yīng)用的需求,也需要準(zhǔn)確、及時的監(jiān)測應(yīng)用程序前臺和后臺的狀態(tài)切換情況。
現(xiàn)有技術(shù)中監(jiān)測應(yīng)用程序狀態(tài)切換的方法包括:通過監(jiān)測應(yīng)用程序的每個界面的“開始”和“暫?!眱蓚€生命周期事件來獲知前臺和后臺狀態(tài)切換的情況。但是該方法在打開一個透明主題界面的時候,并不會觸發(fā)“暫?!笔录?,從而導(dǎo)致狀態(tài)切換判斷錯誤;另外在各種深度定制的安卓系統(tǒng)里,部分系統(tǒng)在調(diào)出任務(wù)管理界面時,系統(tǒng)也不會觸發(fā)“暫?!笔录瑥亩矊?dǎo)致狀態(tài)切換判斷錯誤。
因此,現(xiàn)有技術(shù)方法監(jiān)測應(yīng)用程序狀態(tài)的準(zhǔn)確性有待提高。
技術(shù)實(shí)現(xiàn)要素:
為解決上述技術(shù)問題,本發(fā)明提供一種監(jiān)測應(yīng)用程序狀態(tài)的設(shè)備、裝置及方法,能提高監(jiān)測應(yīng)用程序狀態(tài)的準(zhǔn)確性。
根據(jù)本發(fā)明的一個方面,提供一種監(jiān)測應(yīng)用程序狀態(tài)的設(shè)備,包括:存儲器和處理器;
所述存儲器,存儲應(yīng)用程序;
所述處理器,獲取所述存儲器所存儲的應(yīng)用程序的焦點(diǎn)狀態(tài)值,根據(jù)所述應(yīng)用程序的焦點(diǎn)狀態(tài)值確定所述應(yīng)用程序的運(yùn)行狀態(tài)。
優(yōu)選的,所述處理器通過監(jiān)測應(yīng)用程序的界面或?qū)υ捒虻慕裹c(diǎn)切換事件,獲取所述應(yīng)用程序的焦點(diǎn)狀態(tài)值。
根據(jù)本發(fā)明的另一個方面,提供一種監(jiān)測應(yīng)用程序狀態(tài)的裝置,包括:
獲取模塊,用于獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值;
處理模塊,用于根據(jù)所述獲取模塊獲取的應(yīng)用程序的焦點(diǎn)狀態(tài)值確定所述應(yīng)用程序的運(yùn)行狀態(tài)。
優(yōu)選的,所述獲取模塊包括:
監(jiān)測子模塊,用于監(jiān)測應(yīng)用程序的界面或?qū)υ捒虻慕裹c(diǎn)切換事件;
狀態(tài)值獲取子模塊,用于根據(jù)所述監(jiān)測子模塊監(jiān)測應(yīng)用程序的界面或?qū)υ捒虻慕裹c(diǎn)切換事件的結(jié)果,獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值。
優(yōu)選的,所述獲取模塊還包括:
統(tǒng)計(jì)子模塊,用于使用全局計(jì)數(shù)器進(jìn)行焦點(diǎn)狀態(tài)計(jì)數(shù);
所述狀態(tài)值獲取子模塊獲取所述統(tǒng)計(jì)子模塊使用全局計(jì)數(shù)器進(jìn)行焦點(diǎn)狀態(tài)計(jì)數(shù)的焦點(diǎn)狀態(tài)值。
優(yōu)選的,所述監(jiān)測子模塊監(jiān)測到所述應(yīng)用程序的界面或所述對話框獲取到焦點(diǎn)時,所述統(tǒng)計(jì)子模塊中的全局計(jì)數(shù)器數(shù)值增加,所述監(jiān)測子模塊監(jiān)測到所述應(yīng)用程序的界面或所述對話框失去焦點(diǎn)時,所述統(tǒng)計(jì)子模塊中的全局計(jì)數(shù)器數(shù)值減小。
優(yōu)選的,所述處理模塊包括:
第一處理子模塊,用于若所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第一狀態(tài)值,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為前臺運(yùn)行狀態(tài);或,
第二處理子模塊,用于若所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第二狀態(tài)值,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為后臺運(yùn)行狀態(tài)。
優(yōu)選的,所述處理模塊還包括:
第三處理子模塊,用于若所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第三狀態(tài)值,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為處于界面跳轉(zhuǎn)、回退過程中或彈出、關(guān)閉對話框過程中。
根據(jù)本發(fā)明的另一個方面,提供一種監(jiān)測應(yīng)用程序狀態(tài)的方法,其特征在于,包括:
獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值;
根據(jù)所述應(yīng)用程序的焦點(diǎn)狀態(tài)值確定所述應(yīng)用程序的運(yùn)行狀態(tài)。
優(yōu)選的,所述獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值,包括:
通過監(jiān)測應(yīng)用程序的界面或?qū)υ捒虻慕裹c(diǎn)切換事件,獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值。
優(yōu)選的,所述獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值包括:
獲取使用全局計(jì)數(shù)器進(jìn)行焦點(diǎn)狀態(tài)計(jì)數(shù)的焦點(diǎn)狀態(tài)值。
優(yōu)選的,所述使用全局計(jì)數(shù)器進(jìn)行焦點(diǎn)狀態(tài)計(jì)數(shù),包括:
如果監(jiān)測到所述應(yīng)用程序的界面或所述對話框獲取到焦點(diǎn)時,所述全局計(jì)數(shù)器數(shù)值增加,
如果監(jiān)測到所述應(yīng)用程序的界面或所述對話框失去焦點(diǎn)時,所述全局計(jì)數(shù)器數(shù)值減小。
優(yōu)選的,所述根據(jù)所述應(yīng)用程序的焦點(diǎn)狀態(tài)值確定所述應(yīng)用程序的運(yùn)行狀態(tài),包括:
若所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第一狀態(tài)值,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為前臺運(yùn)行狀態(tài);或,
若所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第二狀態(tài)值,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為后臺運(yùn)行狀態(tài)。
優(yōu)選的,所述方法還包括:
若所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第三狀態(tài)值,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為處于界面跳轉(zhuǎn)、回退過程中或彈出、關(guān)閉對話框過程中。
優(yōu)選的,所述預(yù)設(shè)第一狀態(tài)值為1,所述預(yù)設(shè)第二狀態(tài)值為0
可以發(fā)現(xiàn),本發(fā)明實(shí)施例的技術(shù)方案,可以獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值,然后再根據(jù)獲取的應(yīng)用程序的焦點(diǎn)狀態(tài)值來確定所述應(yīng)用程序的運(yùn)行狀態(tài),即不同的焦點(diǎn)狀態(tài)值會對應(yīng)應(yīng)用程序的不同運(yùn)行狀態(tài),這樣會比現(xiàn)有技術(shù)利用生命周期事件來獲知前臺和后臺狀態(tài)切換的方法更為準(zhǔn)確,也不受安卓系統(tǒng)定制影響,從而提高了監(jiān)測應(yīng)用程序狀態(tài)的準(zhǔn)確性,也使得可以為后續(xù)根據(jù)應(yīng)用程序的運(yùn)行狀態(tài)所執(zhí)行的處理操作提供參考意見。
進(jìn)一步的,本發(fā)明實(shí)施例中,可以通過監(jiān)測應(yīng)用程序的界面獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值,也可以通過監(jiān)測對話框的焦點(diǎn)切換事件獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值。
進(jìn)一步的,本發(fā)明實(shí)施例可以通過使用全局計(jì)數(shù)器進(jìn)行焦點(diǎn)狀態(tài)計(jì)數(shù),如果監(jiān)測到所述應(yīng)用程序的界面或所述對話框獲取到焦點(diǎn),所述全局計(jì)數(shù)器數(shù)值增加,如果監(jiān)測到所述應(yīng)用程序的界面或所述對話框失去焦點(diǎn),所述全局計(jì)數(shù)器數(shù)值減小。
進(jìn)一步的,本發(fā)明實(shí)施例中如所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第一狀態(tài)值,例如為1,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為前臺運(yùn)行狀態(tài);或,若所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第二狀態(tài)值,例如為0,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為后臺運(yùn)行狀態(tài)。
附圖說明
通過結(jié)合附圖對本公開示例性實(shí)施方式進(jìn)行更詳細(xì)的描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實(shí)施方式中,相同的參考標(biāo)號通常代表相同部件。
圖1是根據(jù)本發(fā)明的一個實(shí)施例的一種監(jiān)測應(yīng)用程序狀態(tài)的設(shè)備的示意性方框圖;
圖2是根據(jù)本發(fā)明的一個實(shí)施例的一種監(jiān)測應(yīng)用程序狀態(tài)的裝置的示意性方框圖;
圖3是根據(jù)本發(fā)明的一個實(shí)施例的一種監(jiān)測應(yīng)用程序狀態(tài)的裝置的另一示意性方框圖;
圖4是根據(jù)本發(fā)明的一個實(shí)施例的一種監(jiān)測應(yīng)用程序狀態(tài)的方法的示意性流程圖;
圖5是根據(jù)本發(fā)明的一個實(shí)施例的一種監(jiān)測應(yīng)用程序狀態(tài)的方法的另一示意性流程圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的優(yōu)選實(shí)施方式。雖然附圖中顯示了本公開的優(yōu)選實(shí)施方式,然而應(yīng)該理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施方式所限制。相反,提供這些實(shí)施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
本發(fā)明提供一種監(jiān)測應(yīng)用程序狀態(tài)的設(shè)備,能提高監(jiān)測應(yīng)用程序狀態(tài)的準(zhǔn)確性。
圖1是根據(jù)本發(fā)明的一個實(shí)施例的一種監(jiān)測應(yīng)用程序狀態(tài)的設(shè)備的示意性方框圖。
如圖1所示,在一種監(jiān)測應(yīng)用程序狀態(tài)的設(shè)備10中包括:存儲器11和處理器12。
所述存儲器11,存儲應(yīng)用程序。
所述處理器12,獲取所述存儲器11所存儲的應(yīng)用程序的焦點(diǎn)狀態(tài)值,根據(jù)所述應(yīng)用程序的焦點(diǎn)狀態(tài)值確定所述應(yīng)用程序的運(yùn)行狀態(tài)。
其中,所述處理器12通過監(jiān)測應(yīng)用程序的界面或?qū)υ捒虻慕裹c(diǎn)切換事件,獲取所述應(yīng)用程序的焦點(diǎn)狀態(tài)值。
在上述監(jiān)測應(yīng)用程序狀態(tài)的設(shè)備中的處理器12,可以作為一個獨(dú)立的裝置結(jié)構(gòu),該獨(dú)立的裝置結(jié)構(gòu)可以稱為一種監(jiān)測應(yīng)用程序狀態(tài)的裝置,該監(jiān)測應(yīng)用程序狀態(tài)的裝置可以包括多個子模塊,下文將結(jié)合圖2和圖3對該監(jiān)測應(yīng)用程序狀態(tài)的裝置的結(jié)構(gòu)進(jìn)行詳細(xì)說明。
圖2是根據(jù)本發(fā)明的一個實(shí)施例的一種監(jiān)測應(yīng)用程序狀態(tài)的裝置的示意性方框圖。
如圖2所示,在一種監(jiān)測應(yīng)用程序狀態(tài)的裝置20中可以包括:獲取模塊21和處理模塊22。
獲取模塊21,用于獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值。
處理模塊22,用于根據(jù)所述獲取模塊21獲取的應(yīng)用程序的焦點(diǎn)狀態(tài)值確定所述應(yīng)用程序的運(yùn)行狀態(tài)。
其中,所述獲取模塊21可以通過監(jiān)測應(yīng)用程序的界面或?qū)υ捒虻慕裹c(diǎn)切換事件,獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值。獲取模塊21可以獲取使用全局計(jì)數(shù)器進(jìn)行焦點(diǎn)狀態(tài)計(jì)數(shù)的焦點(diǎn)狀態(tài)值。
其中,所述處理模塊22可以根據(jù)所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第一狀態(tài)值,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為前臺運(yùn)行狀態(tài);或,根據(jù)所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第二狀態(tài)值,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為后臺運(yùn)行狀態(tài)。
由該實(shí)施例可見,本發(fā)明實(shí)施例可以獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值,然后再根據(jù)獲取的應(yīng)用程序的焦點(diǎn)狀態(tài)值來確定所述應(yīng)用程序的運(yùn)行狀態(tài),即不同的焦點(diǎn)狀態(tài)值會對應(yīng)應(yīng)用程序的不同運(yùn)行狀態(tài),這樣會比現(xiàn)有技術(shù)利用生命周期事件來獲知前臺和后臺狀態(tài)切換的方法更為準(zhǔn)確,也不受安卓系統(tǒng)定制影響,從而提高了監(jiān)測應(yīng)用程序狀態(tài)的準(zhǔn)確性,也使得可以為后續(xù)根據(jù)應(yīng)用程序的運(yùn)行狀態(tài)所執(zhí)行的處理操作提供參考意見。
圖3是根據(jù)本發(fā)明的一個實(shí)施例的一種監(jiān)測應(yīng)用程序狀態(tài)的裝置的另一示意性方框圖。
如圖3所示,在一種監(jiān)測應(yīng)用程序狀態(tài)的裝置20中可以包括:獲取模塊21、處理模塊22。
其中,獲取模塊21、處理模塊22的功能參見圖2所示。
其中,獲取模塊21可以包括:監(jiān)測子模塊211、狀態(tài)值獲取子模塊212。
監(jiān)測子模塊211,用于監(jiān)測應(yīng)用程序的界面或?qū)υ捒虻慕裹c(diǎn)切換事件。
狀態(tài)值獲取子模塊212,用于根據(jù)所述監(jiān)測子模塊211監(jiān)測應(yīng)用程序的界面或?qū)υ捒虻慕裹c(diǎn)切換事件的結(jié)果,獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值。
其中,所述獲取模塊21還可以包括:統(tǒng)計(jì)子模塊213。
統(tǒng)計(jì)子模塊213,用于使用全局計(jì)數(shù)器進(jìn)行焦點(diǎn)狀態(tài)計(jì)數(shù)。全局計(jì)數(shù)器的初始值可以設(shè)置為0。
所述狀態(tài)值獲取子模塊212獲取所述統(tǒng)計(jì)子模塊213使用全局計(jì)數(shù)器進(jìn)行焦點(diǎn)狀態(tài)計(jì)數(shù)的焦點(diǎn)狀態(tài)值。
其中,在所述監(jiān)測子模塊211監(jiān)測應(yīng)用程序的界面或?qū)υ捒虻慕裹c(diǎn)切換事件時,如果所述監(jiān)測子模塊211監(jiān)測到所述界面或所述對話框獲取到焦點(diǎn),所述統(tǒng)計(jì)子模塊213中的全局計(jì)數(shù)器數(shù)值增加,例如加1,如果所述監(jiān)測子模塊211監(jiān)測到所述界面或所述對話框失去焦點(diǎn),所述統(tǒng)計(jì)子模塊213中的全局計(jì)數(shù)器數(shù)值減小,例如減1。
其中,所述處理模塊22可以包括:第一處理子模塊221或第二處理子模塊222。
第一處理子模塊221,用于若所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第一狀態(tài)值,例如值為1,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為前臺運(yùn)行狀態(tài)。
第二處理子模塊222,用于若所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第二狀態(tài)值,例如值為0,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為后臺運(yùn)行狀態(tài)。
其中,所述處理模塊22還可以包括:第三處理子模塊223。
第三處理子模塊223,用于若所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第三狀態(tài)值,例如值為2,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為處于界面跳轉(zhuǎn)、回退過程中或彈出、關(guān)閉對話框過程中。
需說明的是,上述是以全局計(jì)數(shù)器初始值為0,獲取到焦點(diǎn)則全局計(jì)數(shù)器加1,失去焦點(diǎn)則全局計(jì)數(shù)器減1舉例說明但不局限于此,也可以將初始值設(shè)置為其他數(shù)值,或者設(shè)置規(guī)則為獲取到焦點(diǎn)則全局計(jì)數(shù)器減1,失去焦點(diǎn)則全局計(jì)數(shù)器加1,其原理是類似。
上述詳細(xì)介紹了本發(fā)明的一種監(jiān)測應(yīng)用程序狀態(tài)的設(shè)備及裝置,以下介紹本發(fā)明對應(yīng)的監(jiān)測應(yīng)用程序狀態(tài)的方法。
圖4是根據(jù)本發(fā)明的一個實(shí)施例的一種監(jiān)測應(yīng)用程序狀態(tài)的方法的示意性流程圖。
如圖4所示,在步驟401中,獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值。
該步驟可以由監(jiān)測應(yīng)用程序狀態(tài)的裝置,獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值。
其中,可以通過監(jiān)測應(yīng)用程序的界面或?qū)υ捒虻慕裹c(diǎn)切換事件,獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值。
一般在軟件開發(fā)中,焦點(diǎn)事件指的是當(dāng)前鼠標(biāo)、觸摸點(diǎn)或者鍵盤聚焦的事件,此時的操作范圍局限在這個焦點(diǎn)中,不會被別的中斷。而焦點(diǎn)切換事件,則可以理解為焦點(diǎn)發(fā)生變化的事件。
其中,可以獲取使用全局計(jì)數(shù)器進(jìn)行焦點(diǎn)狀態(tài)計(jì)數(shù)的焦點(diǎn)狀態(tài)值。例如,在監(jiān)測應(yīng)用程序的界面或?qū)υ捒虻慕裹c(diǎn)切換事件時,如果監(jiān)測到所述界面或所述對話框獲取到焦點(diǎn),所述全局計(jì)數(shù)器數(shù)值增加,如果監(jiān)測到所述界面或所述對話框失去焦點(diǎn),所述全局計(jì)數(shù)器數(shù)值減小。
在步驟402中,根據(jù)所述應(yīng)用程序的焦點(diǎn)狀態(tài)值確定所述應(yīng)用程序的運(yùn)行狀態(tài)。
該步驟可以由監(jiān)測應(yīng)用程序狀態(tài)的裝置,根據(jù)所述應(yīng)用程序的焦點(diǎn)狀態(tài)值確定所述應(yīng)用程序的運(yùn)行狀態(tài)。
該步驟中,若所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第一狀態(tài)值,例如值為1,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為前臺運(yùn)行狀態(tài);或,
若所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第二狀態(tài)值,例如值為0,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為后臺運(yùn)行狀態(tài)。
該步驟中,還可以是若所述應(yīng)用程序的焦點(diǎn)狀態(tài)值為預(yù)設(shè)第三狀態(tài)值,例如值為2,確定所述應(yīng)用程序的運(yùn)行狀態(tài)為處于界面跳轉(zhuǎn)、回退過程中或彈出、關(guān)閉對話框過程中。
由該實(shí)施例可見,本發(fā)明實(shí)施例可以獲取應(yīng)用程序的焦點(diǎn)狀態(tài)值,然后再根據(jù)獲取的應(yīng)用程序的焦點(diǎn)狀態(tài)值來確定所述應(yīng)用程序的運(yùn)行狀態(tài),即不同的焦點(diǎn)狀態(tài)值會對應(yīng)應(yīng)用程序的不同運(yùn)行狀態(tài),這樣會比現(xiàn)有技術(shù)利用生命周期事件來獲知前臺和后臺狀態(tài)切換的方法更為準(zhǔn)確,也不受安卓系統(tǒng)定制影響,從而提高了監(jiān)測應(yīng)用程序狀態(tài)的準(zhǔn)確性,也使得可以為后續(xù)根據(jù)應(yīng)用程序的運(yùn)行狀態(tài)所執(zhí)行的處理操作提供參考意見。
圖5是根據(jù)本發(fā)明的一個實(shí)施例的一種監(jiān)測應(yīng)用程序狀態(tài)的方法的另一示意性流程圖。
圖5相對于圖4更詳細(xì)描述了本發(fā)明實(shí)施例的技術(shù)方案。
本發(fā)明實(shí)施例主要是通過監(jiān)測應(yīng)用程序每個界面和對話框的“焦點(diǎn)切換事件”,并使用全局計(jì)數(shù)器進(jìn)行焦點(diǎn)狀態(tài)計(jì)數(shù),從而實(shí)時且準(zhǔn)確的監(jiān)測到應(yīng)用程序前后臺狀態(tài)切換的情況。
本發(fā)明實(shí)施例可以通過監(jiān)測應(yīng)用程序的每個界面或?qū)υ捒虻摹敖裹c(diǎn)切換事件”,并使用全局計(jì)數(shù)器進(jìn)行焦點(diǎn)狀態(tài)計(jì)數(shù)。當(dāng)監(jiān)測到有界面獲取到焦點(diǎn)時,則將全局計(jì)數(shù)器加1;當(dāng)監(jiān)測到有界面失去了焦點(diǎn),則將全局計(jì)數(shù)器減1;當(dāng)監(jiān)測到彈出的對話框獲取到焦點(diǎn)時,則將全局計(jì)數(shù)器加1;當(dāng)監(jiān)測到彈出的對話框失去焦點(diǎn)時,則將全局計(jì)數(shù)器減1。如果全局計(jì)數(shù)器的當(dāng)前值等于1,可以認(rèn)為應(yīng)用程序處于前臺運(yùn)行狀態(tài);如果全局計(jì)數(shù)器的當(dāng)前值等于0,可以認(rèn)為應(yīng)用處于后臺運(yùn)行狀態(tài)。需說明的是,也可以進(jìn)行相反設(shè)置,其原理是類似的。還需說明的是,上述只是以取值為1或0舉例說明但不局限于此。
如圖5所示,在步驟501中,監(jiān)測應(yīng)用程序的界面或?qū)υ捒虻慕裹c(diǎn)切換事件。
該步驟中,監(jiān)測應(yīng)用程序每個界面的“焦點(diǎn)切換事件”,或者,監(jiān)測應(yīng)用程序彈出對話框的“焦點(diǎn)切換事件”。
在步驟502中,根據(jù)焦點(diǎn)切換事件的監(jiān)測結(jié)果,使用全局計(jì)數(shù)器進(jìn)行焦點(diǎn)狀態(tài)計(jì)數(shù)。
本發(fā)明實(shí)施例中,可以聲明一個全局的靜態(tài)變量作為全局計(jì)數(shù)器T,用于焦點(diǎn)狀態(tài)計(jì)數(shù),初始值可以設(shè)置為0。
如果監(jiān)測到界面此時獲取到焦點(diǎn),則全局計(jì)數(shù)器T加1;如果監(jiān)測到界面此時失去了焦點(diǎn),則全局計(jì)數(shù)器T減1;或,
如果監(jiān)測到對話框獲此時取到焦點(diǎn),則全局計(jì)數(shù)器T加1;如果監(jiān)測到對話框此時失去了焦點(diǎn),則全局計(jì)數(shù)器T減1。
在步驟503中,根據(jù)進(jìn)行焦點(diǎn)狀態(tài)計(jì)數(shù)得到的焦點(diǎn)狀態(tài)值確定所述應(yīng)用程序的運(yùn)行狀態(tài)。
當(dāng)全局計(jì)數(shù)器T的值發(fā)生變化時,如果當(dāng)前值等于1,則可以確定應(yīng)用程序處于前臺運(yùn)行狀態(tài),如果當(dāng)前值等于0,則可以確定應(yīng)用程序處于后臺運(yùn)行狀態(tài);如果當(dāng)前值等于2,則可以確定所述應(yīng)用程序的運(yùn)行狀態(tài)為處于界面跳轉(zhuǎn)、回退過程中或彈出、關(guān)閉對話框過程中
以下進(jìn)一步舉例進(jìn)行說明。下面所描述的內(nèi)容以列出界面打開、跳轉(zhuǎn)、切換、彈出對話框等操作及全局計(jì)數(shù)器T變化的情況舉例說明但不局限于此。其中,可以為每個應(yīng)用程序設(shè)置一個對應(yīng)的全局計(jì)數(shù)器但不局限于此。
監(jiān)測到移動終端桌面的其中一個應(yīng)用程序被打開,進(jìn)入界面A1,界面A1根據(jù)“焦點(diǎn)切換事件”獲取到焦點(diǎn),全局計(jì)數(shù)器T加1,T的值為1,表示應(yīng)用程序的當(dāng)前狀態(tài)切換為前臺運(yùn)行狀態(tài)。
當(dāng)該應(yīng)用程序的界面A1跳轉(zhuǎn)到界面A2,A2根據(jù)“焦點(diǎn)切換事件”獲取到焦點(diǎn),全局計(jì)數(shù)器T加1,T的值為2,但緊接著,A1會失去焦點(diǎn),全局計(jì)數(shù)器T減1,T的值為1,表示當(dāng)前狀態(tài)為前臺運(yùn)行狀態(tài)。
當(dāng)從界面A2打開非自身應(yīng)用界面B1(例如從通知欄進(jìn)入微信聊天界面或系統(tǒng)設(shè)置界面等),A2會失去焦點(diǎn),全局計(jì)數(shù)器T減1,T的值為0,表示當(dāng)前狀態(tài)切換為后臺運(yùn)行狀態(tài)。
當(dāng)從界面B1返回到上一級界面A2,A2會獲取到焦點(diǎn),全局計(jì)數(shù)器T加1,T的值為1,表示當(dāng)前狀態(tài)切換為前臺運(yùn)行狀態(tài)。
當(dāng)從A2返回到上一級界面A1,A1會獲取到焦點(diǎn),計(jì)數(shù)器T加1,T的值為2,但緊接著,A2會失去焦點(diǎn),計(jì)數(shù)器T減1,T的值為1,表示當(dāng)前狀態(tài)為前臺運(yùn)行狀態(tài)。
如果從A1彈出對話框D1,對話框D1會獲取到焦點(diǎn),全局計(jì)數(shù)器T加1,T的值為2,但緊接著,A1會失去焦點(diǎn),計(jì)數(shù)器T減1,T的值為1,表示當(dāng)前狀態(tài)為前臺運(yùn)行狀態(tài)。
當(dāng)關(guān)閉彈出的對話框D1,A1會獲取到焦點(diǎn),全局計(jì)數(shù)器T加1,T的值為2,但緊接著,D1會失去焦點(diǎn),全局計(jì)數(shù)器T減1,T的值為1,表示當(dāng)前狀態(tài)為前臺運(yùn)行狀態(tài)。
當(dāng)從A1返回到移動終端桌面,或按功能鍵“Home”鍵回到移動終端桌面,A1會失去焦點(diǎn),全局計(jì)數(shù)器T減1,T的值為0,表示當(dāng)前狀態(tài)切換為后臺運(yùn)行狀態(tài)。
根據(jù)上述描述,可以看到全局計(jì)數(shù)器T的值可能為0、1或2,為0的時候表示應(yīng)用程序正處于后臺運(yùn)行狀態(tài),而為1的時候,表示應(yīng)用程序正處于前臺運(yùn)行狀態(tài),而為2的時候,表示界面正處于跳轉(zhuǎn)、回退過程中或彈出、關(guān)閉對話框過程中。
需說明的是,上述是以全局計(jì)數(shù)器初始值為0,獲取到焦點(diǎn)則全局計(jì)數(shù)器加1,失去焦點(diǎn)則全局計(jì)數(shù)器減1舉例說明但不局限于此,也可以將初始值設(shè)置為其他數(shù)值,或者設(shè)置規(guī)則為獲取到焦點(diǎn)則全局計(jì)數(shù)器減1,失去焦點(diǎn)則全局計(jì)數(shù)器加1,其原理是類似。
本發(fā)明實(shí)施例實(shí)現(xiàn)更準(zhǔn)確的監(jiān)測應(yīng)用程序前后臺狀態(tài)切換的情況可以滿足某些業(yè)務(wù)需求,即本發(fā)明實(shí)施例準(zhǔn)確監(jiān)測應(yīng)用程序狀態(tài)后,可以為后續(xù)根據(jù)應(yīng)用程序的運(yùn)行狀態(tài)所執(zhí)行的處理操作提供參考意見。例如,可用于發(fā)現(xiàn)當(dāng)應(yīng)用程序在前臺使用時被用戶正常強(qiáng)制中斷而被判斷成前臺崩潰而導(dǎo)致前臺崩潰率統(tǒng)計(jì)異常偏高的問題;除此之外,該方法可以通過記錄應(yīng)用程序被打開的時間、進(jìn)入前臺運(yùn)行狀態(tài)或后臺運(yùn)行狀態(tài)的時間等,因此該方法還能準(zhǔn)確統(tǒng)計(jì)到用戶每次使用應(yīng)用程序的時長,給產(chǎn)品設(shè)計(jì)提供用戶體驗(yàn)優(yōu)化的指標(biāo)之一;另外檢測到應(yīng)用程序切換到后臺運(yùn)行狀態(tài)一段時間后,還能及時釋放部分內(nèi)存占用,節(jié)省系統(tǒng)性能。
本發(fā)明實(shí)施例的方案是一種通用的方案,不受安卓系統(tǒng)版本兼容的影響,也可以解決不同品牌移動終端深度定制系統(tǒng)所導(dǎo)致的前后臺狀態(tài)判斷異常的情況。
上文中已經(jīng)參考附圖詳細(xì)描述了根據(jù)本發(fā)明的技術(shù)方案。
此外,根據(jù)本發(fā)明的方法還可以實(shí)現(xiàn)為一種計(jì)算機(jī)程序,該計(jì)算機(jī)程序包括用于執(zhí)行本發(fā)明的上述方法中限定的上述各步驟的計(jì)算機(jī)程序代碼指令?;蛘撸鶕?jù)本發(fā)明的方法還可以實(shí)現(xiàn)為一種計(jì)算機(jī)程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀介質(zhì),在該計(jì)算機(jī)可讀介質(zhì)上存儲有用于執(zhí)行本發(fā)明的上述方法中限定的上述功能的計(jì)算機(jī)程序。本領(lǐng)域技術(shù)人員還將明白的是,結(jié)合這里的公開所描述的各種示例性邏輯塊、模塊、電路和算法步驟可以被實(shí)現(xiàn)為電子硬件、計(jì)算機(jī)軟件或兩者的組合。
附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實(shí)施例的系統(tǒng)和方法的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)記的功能也可以以不同于附圖中所標(biāo)記的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
以上已經(jīng)描述了本發(fā)明的各實(shí)施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實(shí)施例。在不偏離所說明的各實(shí)施例的范圍和精神的情況下,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實(shí)施例的原理、實(shí)際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的改進(jìn),或者使本技術(shù)領(lǐng)域的其它普通技術(shù)人員能理解本文披露的各實(shí)施例。