標籤:des android blog io ar java for on 2014
瀋陽斌子在今天項目需求上碰到個這樣的問題,在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, breakbreak;}}return isAppRunning;}
首先需要注意的是要想進行判斷,必須加入注釋中的那個許可權,不然程式會拋異常的。大體的思路是這樣的,獲得Activity的管理器,並且通過管理器獲得當前正在啟動並執行100個程式,然後去迴圈這個結果集,擷取在迭代過程中每個程式的基礎頁面的包名和棧式最頂層的包名,用該包名和我們需要判斷傳入的包名參數進行比對,如果找到了就認為該程式正在運行,如果沒找到就證明該程式沒在運行。我現有的程式就是這樣實現的,如有漏洞還請批評指正。瀋陽斌子原創。
Android 判斷程式在手機中是否是活動狀態或者執行狀態