Android APP 进入后台开启手势密码页面
在baseactivity中 onstop() 里 判断是否处于后台 代码为
if (isBackground(mContext)) { //进入手势密码页 Intent i = new Intent(mContext, LockActivity.class); startActivity(i); }
public static boolean isBackground(Context context) { ActivityManager activityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager .getRunningAppProcesses(); for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) { if (appProcess.processName.equals(context.getPackageName())) { Log.i(context.getPackageName(), "此appimportace =" + appProcess.importance + ",context.getClass().getName()=" + context.getClass().getName()); if (appProcess.importance != ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { Log.i(context.getPackageName(), "处于后台" + appProcess.processName); return true; } else { Log.i(context.getPackageName(), "处于前台" + appProcess.processName); return false; } } } return false; }
遇到的问题:
1、手势密码页 多次打开 可设置此activity启动模式为singletop
2、业务需要 在某个特定页面内无需跳到手势密码页 可在onstop方法 加个判断 当前上下文 context instansof 某activity
3、程序正常退出时,发现仍会跳到手势密码页 解决方法:在跳转前判断APP 存放activity的栈或集合的size()>0