如何監(jiān)聽程序在后臺
有時候,我們?yōu)榱藢崿F(xiàn)某種需求,需要隔一段時間監(jiān)聽一下程序是否在后臺,那么如何做呢扳肛?
分析需求
當(dāng)我們按下手機的HOME鍵,會使我們的應(yīng)用程序進入到后臺運行乘碑。我們的程序組成部分有哪些:activity敞峭、fragment、service 等等蝉仇,看到這些組件旋讹,相信你應(yīng)該已經(jīng)有了一些想法。比如轿衔,我們可以監(jiān)聽activity的活動監(jiān)聽沉迹,程序進入后臺,會觸發(fā)onstop ondestroy 等生命周期害驹,下面我們就使用這種方式來實現(xiàn)需求
如何實現(xiàn)
通常鞭呕,我們在程序剛開始啟動的時候都會初始化一些重要的數(shù)據(jù),比如數(shù)據(jù)庫宛官,比如服務(wù)等等葫松,我們基本都會自己實現(xiàn)Application的子類,在Application中底洗,就有這么一個registerActivityLifecycleCallbacks回調(diào)方法腋么,看方法名,你應(yīng)該就已經(jīng)明白亥揖,這個一個注冊了activity生命回調(diào)的方法珊擂,在我們自己的全局子類中圣勒,重載這個方法,就實現(xiàn)了對activity全程生命周期的監(jiān)聽摧扇。
邏輯描述
在上述圖片中 你應(yīng)該注意到在onActivityResumed和onActivityStopped我分別寫了mActivityOnResume和mActivityCount兩個變量圣贸,分別來記錄當(dāng)前acitivty活動的生命個數(shù)。其實到這里扛稽,你應(yīng)該就已經(jīng)明白我們怎么去實現(xiàn)了吁峻,是的。我們可以在我們業(yè)務(wù)邏輯在张,去對這兩個變量進行判斷锡搜,當(dāng)mActivityOnResume==0&&mActivityCount==0的時候,也就意味著瞧掺,我們的程序其實已經(jīng)進入后臺了。
結(jié)尾
這個需求實現(xiàn)起來很簡單凡傅,相信大家肯定會有其他更加聰明的辦法辟狈,我就在這里拋磚引玉了。