博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
应用程序在后台运行,在后台执行startActivity后会强制把界面带到前端解决方案...
阅读量:6265 次
发布时间:2019-06-22

本文共 1214 字,大约阅读时间需要 4 分钟。

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

你可能感兴趣的文章
Tomcat配置Web默认页面
查看>>
idea phpstorm webstorm等的配置问题
查看>>
bzoj 3501 PA2008 Cliquers Strike Back——贝尔数
查看>>
数据输入验证---Silverlight商业应用程序开发学习笔记(13)
查看>>
SQL SERVER读书笔记:TempDB
查看>>
2016.7.17
查看>>
2016.7.19
查看>>
习题6-3 UVa536 Tree Recovery(树的遍历转换)
查看>>
jquery源码解析:jQuery原型方法init的详解
查看>>
skyeye下修改uboot支持2410从nand启动
查看>>
MyTT工作(一)ListView使用
查看>>
Linux Autotools
查看>>
RTEMS-libbsd实现FDT support for BBB
查看>>
SVM及其对偶
查看>>
(转)趣文:我是一个线程
查看>>
Java对文件的读、写随机访问,RandomAccessFile类的使用分析
查看>>
[idea] SpringBoot整合swagger2实现CRUD
查看>>
redis的一些简介
查看>>
A dream. Do it, never regret!
查看>>
页面禁止横屏
查看>>