1. 程式人生 > 程式設計 >android判斷應用是否已經啟動的例項

android判斷應用是否已經啟動的例項

我就廢話不多說了,還是直接看程式碼吧!

 /**
 * 判斷應用是否已經啟動
 *
 * @param context   上下文物件
 * @param packageName 要判斷應用的包名
 * @return boolean
 */
public static boolean isAppAlive(Context context,String packageName) {
  ActivityManager activityManager =
      (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
  List<ActivityManager.RunningAppProcessInfo> processInfos
      = activityManager.getRunningAppProcesses();
  for (int i = 0; i < processInfos.size(); i++) {
    if (processInfos.get(i).processName.equals(packageName)) {
        return true;
    }
  }

  return false;
}

補充知識:android判斷當前應用是否啟動、app執行狀態、某個介面是否在前臺工具類整理

來直接看程式碼吧!

/**
 * 判斷當前應用是否啟動
 *
 * @param context
 * @return
 */
public static boolean getCurrentTask(Context context) {
	ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
	//獲取當前所有存活task的資訊
	List<RunningTaskInfo> appProcessInfos = activityManager.getRunningTasks(Integer.MAX_VALUE);
	//遍歷,若task的name與當前task的name相同,則返回true,否則,返回false
	for (RunningTaskInfo process : appProcessInfos) {
		if (process.baseActivity.getPackageName().equals(context.getPackageName())
				|| process.topActivity.getPackageName().equals(context.getPackageName())) {
			return true;
		}
	}
	return false;
}
 
/**
 * 返回app執行狀態
 *
 * @param context 一個context
 * @return int 1:前臺 2:後臺 0:不存在
 */
public static int isAppAlive(Context context) {
	String packageName = PackageUtil.getAppProcessName(context);
	ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
	List<ActivityManager.RunningTaskInfo> listInfos = activityManager.getRunningTasks(20);
	// 判斷程式是否在棧頂
	if (listInfos.get(0).topActivity.getPackageName().equals(packageName)) {
		return 1;
	} else {
		// 判斷程式是否在棧裡
		for (ActivityManager.RunningTaskInfo info : listInfos) {
			if (info.topActivity.getPackageName().equals(packageName)) {
				return 2;
			}
		}
		return 0;// 棧裡找不到,返回0
	}
}
 
 
/**
 * 判斷某個介面是否在前臺
 *
 * @param context
 * @param className 某個介面名稱
 */
public static boolean isActivityForeground(Context context,String className) {
	if (context == null || TextUtils.isEmpty(className)) {
		return false;
	}
	ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
	List<ActivityManager.RunningTaskInfo> list = am.getRunningTasks(1);
	if (list != null && list.size() > 0) {
		ComponentName cpn = list.get(0).topActivity;
		if (className.equals(cpn.getClassName())) {
			return true;
		}
	}
	return false;
}

以上這篇android判斷應用是否已經啟動的例項就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。