安卓开发 判断应用是否是前台进程
2018-06-15 本文已影响99人
执念蓝枫
应用场景
当APP在前后台切换时需要对数据进行处理,此时就需要判断应用是否为前台进程。例如手势解锁功能。
代码实现
定义变量,用以判断程序是否是从后台进入前台的依据。
public static boolean isActive = true;
在onResume方法里判断isActive的值,并做相应处理。
protected void onResume(){
if (!isActive) {
//APP 从后台唤醒
isActive = true;
//做相应逻辑处理,比如展示手势验证页面
}
}
在onStop方法里改变isActive的值。
protected void onStop() {
if (!isAppOnForeground()) {
//app 进入后台
isActive = false;//记录当前已经进入后台
}
super.onStop();
}
isAppOnForeground方法的具体实现
/**
* 判断应用是否在前台
*/
public boolean isAppOnForeground() {
ActivityManager activityManager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
String packageName = getApplicationContext().getPackageName();
List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager
.getRunningAppProcesses();
if (appProcesses == null)
return false;
for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
// The name of the process that this object is associated with.
if (appProcess.processName.equals(packageName)
&& appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
return true;
}
}
return false;
}