Android應用程序轉到后臺并回到前臺判斷方法
我們知道,當我們按返回或Home鍵退出應用程序的界面時,應用程序會在后臺被掛起。這么設計的好處是,由于應用被系統(tǒng)緩存在內存中,那么在用戶打開啟動應用時就可以通過調用緩存,快速啟動應用。當然,由于當今內存和處理器能力的限制,系統(tǒng)會自動關閉一些進程。
那么我如何判斷這個應用程序在前臺還是后臺,應用從后臺回到前臺了?
看到一般都是runningProcess或者runningTasks來判斷應用在前臺還是后臺
事實上,Android在SDK 14的時候提供了一個Callback。ActivityLifecycleCallbacks,你可以通過這個Callback拿到App所有Activity的生命周期回調。
public class Application extends android.app.Application { private int activityCount;//activity的count數(shù) private boolean isForeground;//是否在前臺 @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) { } }); } }
這個Callback寫在Application里的,你可以在Application初始化的時候來注冊。
通過這些回調我們可以將這個計數(shù)放在onStart()和onStop()中去。activityCount==1,那么就是前臺,activityCount==0,那就是后臺。這樣判斷很很簡單了吧。
public abstract class BaseClass extends AppCompatActivity { 判斷當前的應用程序是不是在運行 //需要申請GETTask權限 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; //聲明一個布爾變量,記錄當前的活動背景 @Override public void onPause(){ super.onPause(); if(isApplicationBroughtToBackground()) wasBackground= true; } public void onResume(){ super.onResume(); if(wasBackground){// Log.e("aa","從后臺回到前臺"); } wasBackground= false; }}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- Android判斷當前應用程序處于前臺還是后臺的兩種方法
- android編程判斷應用是否具有某個權限的方法
- android判斷手機是否安裝地圖應用實現(xiàn)跳轉到該地圖應用
- Android編程判斷應用程序是否已安裝的方法
- Android開發(fā)判斷一個app應用是否在運行的方法詳解
- Android開發(fā)中實現(xiàn)應用的前后臺切換效果
- Android應用程序保持后臺喚醒(使用WakeLock實現(xiàn))
- Android 監(jiān)聽應用前/后臺切換實例代碼
- Android中應用前后臺切換監(jiān)聽的實現(xiàn)詳解
- Android編程判斷當前應用是否在后臺運行的方法示例
相關文章
Android4.X讀取SIM卡短信和聯(lián)系人相關類實例分析
這篇文章主要介紹了Android 4.X讀取SIM卡短信和聯(lián)系人相關類,以實例形式分析了Android 4.X讀取SIM卡短信和聯(lián)系人的兩個相關類的功能、用法與注意事項,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10Android 使用selector改變按鈕狀態(tài)實例詳解
這篇文章主要介紹了Android 使用selector改變按鈕狀態(tài)實例詳解的相關資料,需要的朋友可以參考下2017-01-01Android使用TabLayou+fragment+viewpager實現(xiàn)滑動切換頁面效果
這篇文章主要介紹了Android使用TabLayou+fragment+viewpager實現(xiàn)滑動切換頁面效果,需要的朋友可以參考下2017-05-05