Android 判斷程式在手機中是否是活動狀態或者執行狀態

來源:互聯網
上載者:User

標籤: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 判斷程式在手機中是否是活動狀態或者執行狀態

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.