当前位置: 代码迷 >> Android >> Android一些非一般方法
  详细解决方案

Android一些非一般方法

热度:99   发布时间:2016-04-28 00:45:29.0
Android一些特殊方法

1、判断一个程序是否显示在前端

/**	 * 判断一个程序是否显示在前端	 * 	 * @param packageName程序包名	 * @param context上下文环境	 * @return true--->在前端,false--->不在前端	 */	public static boolean isApplicationShowing(String packageName,			Context context) {		boolean result = false;		ActivityManager am = (ActivityManager) context				.getSystemService(Context.ACTIVITY_SERVICE);		List<RunningAppProcessInfo> appProcesses = am.getRunningAppProcesses();		if (appProcesses != null) {			for (RunningAppProcessInfo runningAppProcessInfo : appProcesses) {				if (runningAppProcessInfo.processName.equals(packageName)) {					int status = runningAppProcessInfo.importance;					if (status == RunningAppProcessInfo.IMPORTANCE_VISIBLE							|| status == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {						result = true;					}				}			}		}		return result;	}

?

可以根据importance的不同来判断前台或后台

RunningAppProcessInfo 里面的常量IMOPORTANCE就是上面所说的前台后台,其实IMOPORTANCE是表示这个app进程的重要性,因为系统回收时候,会根据IMOPORTANCE来回收进程的。具体可以去看文档。。

public static final int IMPORTANCE_BACKGROUND = 400//后台

public static final int IMPORTANCE_EMPTY = 500//空进程

public static final int IMPORTANCE_FOREGROUND = 100//在屏幕最前端、可获取到焦点 可理解为Activity生命周期的OnResume();

public static final int IMPORTANCE_SERVICE = 300//在服务中

public static final int IMPORTANCE_VISIBLE = 200//在屏幕前端、获取不到焦点可理解为Activity生命周期的OnStart();?

?

2、用于判断当前是否处于锁屏状态

/**	 * 用于判断当前是否处于锁屏状态	 * 	 * @param context	 * @return	 */	public static boolean isApplicationLocked(Context context) {		KeyguardManager keyguardManager = (KeyguardManager) context				.getSystemService(KEYGUARD_SERVICE);		boolean isLockedState = keyguardManager.inKeyguardRestrictedInputMode();// 用于判断当前是否处于锁屏状态。		return isLockedState;	}

?

  相关解决方案