Android 判斷程序在手機中是否是活動狀態或者正在運行狀態

cey6 9年前發布 | 1K 次閱讀 Java Android

項目需求上碰到個這樣的問題,在Service中需要判斷當前的程序是否是活動狀態,換句話說也就是說后臺跑的服務中有業務需求檢測當前程序是否是該服務的程序 這樣好讓點擊推送通知時跳轉到不同的頁面進行不同的操作。下面就粘貼出我封裝了一下的方法和大家共享。

    /**

     *  
     *  @Description    : 這個包名的程序是否在運行 
     *  @Method_Name    : isRunningApp 
     *  @param context 上下文 
     *  @param packageName 判斷程序的包名 
     *  @return 必須加載的權限 
     *      <uses-permission android:name="android.permission.GET_TASKS" />  
     *  @return         : boolean 
     *  @Creation Date  : 2014-10-31 下午1:14:15  
     *  @version        : v1.00 
     *  @Author         : JiaBin 

     *  @Update Date    :  
     *  @Update Author  : JiaBin 
     */  
    public static boolean isRunningApp(Context context, String packageName) {  
        boolean isAppRunning = false;  
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);  
        List<RunningTaskInfo> list = am.getRunningTasks(100);  
        for (RunningTaskInfo info : list) {  
            if (info.topActivity.getPackageName().equals(packageName) && info.baseActivity.getPackageName().equals(packageName)) {  
                isAppRunning = true;  
                // find it, break  
                break;  
            }  
        }  
        return isAppRunning;  
    }  </pre> 


首先需要注意的是要想進行判斷,必須加入注釋中的那個權限,不然程序會拋異常的。大體的思路是這樣的,獲得Activity的管理器,并且通過管理器獲得 當前正在運行的100個程序,然后去循環這個結果集,獲取在迭代過程中每個程序的基礎頁面的包名和棧式最頂層的包名,用該包名和我們需要判斷傳入的包名參 數進行比對,如果找到了就認為該程序正在運行,如果沒找到就證明該程序沒在運行。

 本文由用戶 cey6 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!