应用程序在后台运行,在后台执行startActivity后会强制把界面带到前端解决方案...

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

在项目中,难免会遇到耗时操作,我们都将其写入子线程,但耗时操作结束后则可能需要跳转,但如果用户此前已经将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();

    List 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;
}


转载于:https://my.oschina.net/reborn87/blog/620816

你可能感兴趣的:(应用程序在后台运行,在后台执行startActivity后会强制把界面带到前端解决方案...)