Android判断应用是否在前台或后台

转载 2013年10月10日 16:48:36

Android判断应用是否在前台或后台

判断是否前台是否前端显示:

/**
* 判断一个程序是否显示在前端,根据测试此方法执行效率在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;
}
转自karant

相关文章推荐

Android将后台应用唤起到前台的方法

Android将后台应用唤起到前台的方法- http://blog.csdn.net/peidonghui/article/details/49682159 在Android应用中,有一种场景是点击...
  • ShareUs
  • ShareUs
  • 2017年06月07日 18:59
  • 841

android实现应用程序前台和后台之间转换的监听的两种方式

转载请注明出处: 今天给大家介绍一下android是如何监听我们的应用程序从前台界面变成后台进程以及如何判断从后台进程跳转回前台界面的方法,我会介绍两种方式,从不同的角度来验证我们所需要的效果,话不多...

Android应用从后台切换到前台因为数据被GC报异常

问题情景:     我们的应用在前台运行,无论怎么测试,我们的应用都是正常没问题的,这时按下home键,手机回到桌面,我们的应用进入后台,过了一段时间,我们把应用从后台切换回前台,这时测试时发现应用崩...

Android判断App前台运行还是后台运行(运行状态)

原文:http://p.codekk.com/detail/Android/wenmingvs/AndroidProcess AndroidProcess 项目...

Android判断应用程序处于前台还后台

Android判断当前应用程序处于前台还是后台的两种方法
  • zansl
  • zansl
  • 2014年09月19日 15:22
  • 744

【Android】判断你的应用在前台还是在后台

判断应用是否是在后台 Application.ActivityLifecycleCallbacks

安卓应用 后台被强杀, 返回前台时 出现空指针 导致Crash

想必安卓用户都遇到过系统弹出应用被强制关闭的情况, 这时候的用户体验是及其差的, 所以要极力避免, 当然造成应用被强关的情况有很多, 有因为空指针的, 还有异常未被捕获的, 内存泄露, ...
  • wewe125
  • wewe125
  • 2017年03月07日 21:00
  • 152
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android判断应用是否在前台或后台
举报原因:
原因补充:

(最多只允许输入30个字)