在项目中,难免会遇到耗时操作,我们都将其写入子线程,但耗时操作结束后则可能需要跳转,但如果用户此前已经将app调成后台程序,此时在进行跳转,Android5.0之后会将app提升为前台应用,也就是用户在操作其他应用是,我们的app会突然蹦出来,这样的体验自然不好。在我们项目中,解决方法是:
1、耗时操作结束后,进行判定,应用是否是前台应用,如果是,可进行耗时操作
2、如果耗时操作结束后,应用已经被用户调整为后台应用,则在onRestart中进行跳转操作(在此处还需添加一个标记,跳转后标记失效,以免跳转页面关闭后,重新展现该页面,又会再次跳转),这样用户在下次再次开启app的时候,直接跳转到对应的页面。
判断是否为前台应用的方法:
/** * 程序是否在前台运行 * * @return */public static boolean isAppOnForeground() { // Returns a list of application processes that are running on the // device ActivityManager activityManager = (ActivityManager) CommUtils.getContext().getSystemService(Context.ACTIVITY_SERVICE); String packageName = CommUtils.getContext().getPackageName(); ListappProcesses = 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;}