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】判断你的应用在前台还是在后台

判断应用是否是在后台 Application.ActivityLifecycleCallbacks
  • zhufuing
  • zhufuing
  • 2016年11月02日 14:30
  • 6240

Android App如何判断应用是否在前台还是处于后台

Android App如何判断应用是否在前台还是处于后台
  • kaiqiangzhang001
  • kaiqiangzhang001
  • 2016年01月13日 23:03
  • 1663

android 判断当前application 是在前台还是在后台

我是在做测试我的apk监听短信功能是,发现了这样一个问题:当移动端还处在我的apk状态时,来了一条短信,我并未退出我的apk,就去查看了短信,这时看完短信按了退出键,正常是只返回到我的apk离开时的界...
  • yaoliping89
  • yaoliping89
  • 2014年01月22日 10:13
  • 674

Android判断应用是否在前台运行

/** * 判断程序是否在前台运行 * @param context * @return */ private boolean i...
  • android_zhengyongbo
  • android_zhengyongbo
  • 2017年04月06日 14:24
  • 541

Android 判断app是否在前台还是在后台运行

Android 判断app是否在前台还是在后台运行,直接看代码,可直接使用。 public static boolean isBackground(Context context) { Acti...
  • u013339223
  • u013339223
  • 2015年02月14日 16:59
  • 3523

在android 5.0以上,如何判断当前应用是在前台还是后台

今天在做项目时遇到这个问题,本来很简单的,但是在android 5.1 的系统上运行却出错了,在网上查找答案后发现原来是在android 5.0 之后getRunningTask()方法被废弃,失效了...
  • XCLyijin
  • XCLyijin
  • 2016年01月31日 21:26
  • 1385

ios-判断应用程序是否处在前台

有的时候我们可能需要去判断当前应用程序是否处于前台,然后做一些操作,比如说可能在通知中会用到 那么我们应该怎么去做?UIApplication有一个applicationState属性,我们可以根据...
  • ZCMUCZX
  • ZCMUCZX
  • 2017年10月30日 19:22
  • 330

Android判断应用在前台还是后台运行(判断应用前后台切换)

我们的应用要获取后台运行的app的包名,主要是 getRunningTasks()方法的调用,经过测试在android 2.2 到 4.4的版本都运行的很好,但是在Android 5.0 Lollip...
  • wulianghuan
  • wulianghuan
  • 2015年06月03日 16:53
  • 12503

判断Android程序是否在前台的两种方法

@Override protected void onStop() { if (!isAppOnForeground()) { Debug.i("dwy...
  • herbert5069
  • herbert5069
  • 2015年06月10日 17:23
  • 1123

判断app是否运行于前台的两个方法

不借助特殊的API,使用activity的生命周期回调方法判断app是否处于前台。
  • CHZiroy
  • CHZiroy
  • 2015年02月02日 00:14
  • 5792
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android判断应用是否在前台或后台
举报原因:
原因补充:

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