如何判斷一個(gè)Android應(yīng)用程序轉(zhuǎn)到后臺(tái)并回到前臺(tái)

我們知道举娩,當(dāng)我們按返回或Home鍵退出應(yīng)用程序的界面時(shí)寂屏,應(yīng)用程序會(huì)在后臺(tái)被掛起。這么設(shè)計(jì)的好處是懦底,由于應(yīng)用被系統(tǒng)緩存在內(nèi)存中漠秋,那么在用戶打開啟動(dòng)應(yīng)用時(shí)就可以通過調(diào)用緩存笙蒙,快速啟動(dòng)應(yīng)用。當(dāng)然庆锦,由于當(dāng)今內(nèi)存和處理器能力的限制捅位,系統(tǒng)會(huì)自動(dòng)關(guān)閉一些進(jìn)程。
那么我如何判斷這個(gè)應(yīng)用程序在前臺(tái)還是后臺(tái)搂抒,應(yīng)用從后臺(tái)回到前臺(tái)了艇搀?
看到一般都是runningProcess或者runningTasks來判斷應(yīng)用在前臺(tái)還是后臺(tái)
事實(shí)上,Android在SDK 14的時(shí)候提供了一個(gè)Callback求晶。ActivityLifecycleCallbacks焰雕,你可以通過這個(gè)Callback拿到App所有Activity的生命周期回調(diào)》夹樱看圖:

public class Application extends android.app.Application {
      private int activityCount;//activity的count數(shù) 
      private boolean isForeground;//是否在前臺(tái)
    @Override    public void onCreate() {   
     super.onCreate();       
  registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {   
        @Override           
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
           }  
         @Override           public void onActivityStarted(Activity activity) { 
              activityCount++;           
}           @Override   
                                    public void onActivityResumed(Activity activity) { 
          }  @Override     
                                     public void onActivityPaused(Activity activity) {  
         }     @Override       
                                     public void onActivityStopped(Activity activity) {  
           activityCount--;               if(0==activityCount){ 
                  isForeground=false;               }
           }    @Override  
                                    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {  
         }         @Override  
                                      public void onActivityDestroyed(Activity activity) {
           }       });    }    }

這個(gè)Callback寫在Application里的矩屁,你可以在Application初始化的時(shí)候來注冊(cè)。
通過這些回調(diào)我們可以將這個(gè)計(jì)數(shù)放在onStart()和onStop()中去爵赵。activityCount==1吝秕,那么就是前臺(tái),activityCount==0空幻,那就是后臺(tái)烁峭。這樣判斷很很簡(jiǎn)單了吧。

public abstract  class BaseClass extends AppCompatActivity {  
判斷當(dāng)前的應(yīng)用程序是不是在運(yùn)行
//需要申請(qǐng)GETTask權(quán)限
  private boolean isApplicationBroughtToBackground() { 
       ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);        List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);   
     if (!tasks.isEmpty()) {            ComponentName topActivity = tasks.get(0).topActivity;
            if (!topActivity.getPackageName().equals(getPackageName())) {    
            return true;            }        }        return false;    }  
   public boolean wasBackground= false;    //聲明一個(gè)布爾變量,記錄當(dāng)前的活動(dòng)背景 
    @Override    public void onPause(){
        super.onPause(); 
       if(isApplicationBroughtToBackground())  
          wasBackground= true;    }   
public void onResume(){  
      super.onResume();       
 if(wasBackground){//      
                 Log.e("aa","從后臺(tái)回到前臺(tái)");        }        wasBackground= false;    }}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末秕铛,一起剝皮案震驚了整個(gè)濱河市约郁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌但两,老刑警劉巖鬓梅,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異镜遣,居然都是意外死亡己肮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門悲关,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谎僻,“玉大人,你說我怎么就攤上這事寓辱∷疑埽” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵秫筏,是天一觀的道長(zhǎng)诱鞠。 經(jīng)常有香客問我挎挖,道長(zhǎng),這世上最難降的妖魔是什么航夺? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任蕉朵,我火速辦了婚禮,結(jié)果婚禮上阳掐,老公的妹妹穿的比我還像新娘始衅。我一直安慰自己,他們只是感情好缭保,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布汛闸。 她就那樣靜靜地躺著,像睡著了一般艺骂。 火紅的嫁衣襯著肌膚如雪诸老。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天钳恕,我揣著相機(jī)與錄音别伏,去河邊找鬼。 笑死苞尝,一個(gè)胖子當(dāng)著我的面吹牛畸肆,可吹牛的內(nèi)容都是我干的宦芦。 我是一名探鬼主播宙址,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼调卑!你這毒婦竟也來了抡砂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤恬涧,失蹤者是張志新(化名)和其女友劉穎注益,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溯捆,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丑搔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了提揍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啤月。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖劳跃,靈堂內(nèi)的尸體忽然破棺而出谎仲,到底是詐尸還是另有隱情,我是刑警寧澤刨仑,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布郑诺,位于F島的核電站夹姥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏辙诞。R本人自食惡果不足惜辙售,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望飞涂。 院中可真熱鬧圾亏,春花似錦、人聲如沸封拧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)泽西。三九已至曹铃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捧杉,已是汗流浹背陕见。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留味抖,地道東北人评甜。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像仔涩,于是被迫代替她去往敵國(guó)和親忍坷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理熔脂,服務(wù)發(fā)現(xiàn)佩研,斷路器,智...
    卡卡羅2017閱讀 134,659評(píng)論 18 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,164評(píng)論 25 707
  • 1.什么是Activity?問的不太多,說點(diǎn)有深度的 四大組件之一,一般的,一個(gè)用戶交互界面對(duì)應(yīng)一個(gè)activit...
    JoonyLee閱讀 5,734評(píng)論 2 51
  • 一壺茶的時(shí)間,終結(jié)了賈平凹的《廢都》秽荞,換來只是心中一聲嘆息骤公,莊之蝶的悲劇算是罪有應(yīng)得,應(yīng)了那句“成也是他蚂会,敗也于他...
    二求人生閱讀 170評(píng)論 0 0
  • Ivy楊平華閱讀 192評(píng)論 0 0