判断是否前台是否前端显示:
/**
* 判断一个程序是否显示在前端,根据测试此方法执行效率在11毫秒,无需担心此方法的执行效率
*
* @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 ;
}
* 判断一个程序是否显示在前端,根据测试此方法执行效率在11毫秒,无需担心此方法的执行效率
*
* @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 ;
}
***********************************************************************************
小结:
根据IMOPORTANCE来回收进程的。具体可以去看文档。。
public static final int IMPORTANCE_BACKGROUND = 400//后台
public
可以根据importance的不同来判断前台或后台
RunningAppProcessInfo 里面的常量IMOPORTANCE就是上面所说的前台后台,其实IMOPORTANCE是表示这个app进程的重要性,因为系统回收时候,会 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();
判断应用是否在后台:
private
boolean isBackgroundRunning
(
)
{
String processName = "match.android.activity" ;
ActivityManager activityManager = (ActivityManager ) getSystemService (ACTIVITY_SERVICE ) ;
KeyguardManager keyguardManager = (KeyguardManager ) getSystemService (KEYGUARD_SERVICE ) ;
if (activityManager == null ) return false ;
// get running application processes
List processList = activityManager. getRunningAppProcesses ( ) ;
for (ActivityManager. RunningAppProcessInfo process : processList ) {
if (process. processName. startsWith (processName ) ) {
boolean isBackground = process. importance != IMPORTANCE_FOREGROUND & ;& ; process. importance != IMPORTANCE_VISIBLE ;
boolean isLockedState = keyguardManager. inKeyguardRestrictedInputMode ( ) ;
if (isBackground || isLockedState ) return true ;
else return false ;
}
}
return false ;
}
String processName = "match.android.activity" ;
ActivityManager activityManager = (ActivityManager ) getSystemService (ACTIVITY_SERVICE ) ;
KeyguardManager keyguardManager = (KeyguardManager ) getSystemService (KEYGUARD_SERVICE ) ;
if (activityManager == null ) return false ;
// get running application processes
List processList = activityManager. getRunningAppProcesses ( ) ;
for (ActivityManager. RunningAppProcessInfo process : processList ) {
if (process. processName. startsWith (processName ) ) {
boolean isBackground = process. importance != IMPORTANCE_FOREGROUND & ;& ; process. importance != IMPORTANCE_VISIBLE ;
boolean isLockedState = keyguardManager. inKeyguardRestrictedInputMode ( ) ;
if (isBackground || isLockedState ) return true ;
else return false ;
}
}
return false ;
}
转自karant