在android 5.0以上,如何判斷當前應用是在前台還是后台


今天在做項目時遇到這個問題,本來很簡單的,但是在Android 5.1 的系統上運行卻出錯了,在網上查找答案后發現原來是在android 5.0 之后getRunningTask()方法被廢棄,失效了。在網上查到的解決方法如下,已驗證有效:

 

[java]  view plain  copy
 
 在CODE上查看代碼片派生到我的代碼片
  1. private boolean isAppIsInBackground(Context context) {  
  2.        boolean isInBackground = true;  
  3.        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);  
  4.        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) {  
  5.            List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses();  
  6.            for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) {  
  7.                //前台程序  
  8.                if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {  
  9.                    for (String activeProcess : processInfo.pkgList) {  
  10.                        if (activeProcess.equals(context.getPackageName())) {  
  11.                            isInBackground = false;  
  12.                        }  
  13.                    }  
  14.                }  
  15.            }  
  16.        } else {  
  17.            List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);  
  18.            ComponentName componentInfo = taskInfo.get(0).topActivity;  
  19.            if (componentInfo.getPackageName().equals(context.getPackageName())) {  
  20.                isInBackground = false;  
  21.            }  
  22.        }  
  23.   
  24.        return isInBackground;  
  25.    }  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM