今天,简单讲讲如何判断android 的进程是否处于前台。

1、通过RunningTaskInfo类判断(需要额外权限):

/***判断当前应用程序处于前台还是后台*/public static boolean isApplicationBroughtToBackground(final Context context) {ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);List<RunningTaskInfo> tasks = am.getRunningTasks(1);if (!tasks.isEmpty()) {ComponentName topActivity = tasks.get(0).topActivity;if (!topActivity.getPackageName().equals(context.getPackageName())) {return true;}}return false;}

需要在AndroidMenitfest.xml文件中添加以下权限

<uses-permission android:name="android.permission.GET_TASKS" />

2、通过RunningAppProcessInfo类判断(不需要额外权限):

    //当前应用是否处于前台private boolean isForeground(Context context) {if (context != null) {ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);List<ActivityManager.RunningAppProcessInfo> processes = activityManager.getRunningAppProcesses();for (ActivityManager.RunningAppProcessInfo processInfo: processes) {if (processInfo.processName.equals(context.getPackageName())) {if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {return true;}}}}return false;}可以根据importance的不同来判断前台或后台
RunningAppProcessInfo 里面的常量IMOPORTANCE就是上面所说的前台后台,其实IMOPORTANCE是表示这个app进程的重要性,因为系统回收时候,会根据IMOPORTANCE来回收进程的。具体可以去看文档。。public static final int IMPORTANCE_BACKGROUND = 400//后台public static final int IMPORTANCE_EMPTY = 500//空进程public static final int IMPORTANCE_FOREGROUND = 100//在屏幕最前端、可获取到焦点 可理解为Activity生命周期的OnResume();public static final int IMPORTANCE_SERVICE = 300//在服务中public static final int IMPORTANCE_VISIBLE = 200//在屏幕前端、获取不到焦点可理解为Activity生命周期的OnStart();但上面的方法有的机型不支持,第一种方法还是比较靠谱的,但需要一个权限。具体使用还是看大家自己。版本4.0以上,可以使用ActivityLifecycleif (Build.VERSION.SDK_INT >= 14) {lifecycle = new SimpleActivityLifecycle();registerActivityLifecycleCallbacks(lifecycle);public class SimpleActivityLifecycle implements Application.ActivityLifecycleCallbacks {private boolean isForeground = false;//应用是否处于前端@Overridepublic void onActivityCreated(Activity activity, Bundle savedInstanceState) {}@Overridepublic void onActivityStarted(Activity activity) {}@Overridepublic void onActivityResumed(Activity activity) {isForeground = true;}@Overridepublic void onActivityPaused(Activity activity) {isForeground = false;}@Overridepublic void onActivityStopped(Activity activity) {}@Overridepublic void onActivitySaveInstanceState(Activity activity, Bundle outState) {}@Overridepublic void onActivityDestroyed(Activity activity) {}public boolean isForeground() {return isForeground;}
}

android 判断进程是否处于前台就讲完了。

就这么简单。



android 判断进程是否处于前台相关推荐

  1. Android 判断app是否在前台还是在后台运行

    Android 判断app是否在前台还是在后台运行,直接看代码,可直接使用. [java]  view plain copy public static boolean isBackground(Co ...

  2. Android判断应用是否在前台或后台

    Android判断应用是否在前台或后台 判断是否前台是否前端显示: /** * 判断一个程序是否显示在前端,根据测试此方法执行效率在11毫秒,无需担心此方法的执行效率 * * @param packa ...

  3. 判断App整体处于前台还是后台

    转载请注明转自:[noyet12的博客](http://blog.csdn.net/u012975705) 博客原址:http://blog.csdn.net/u012975705/article/d ...

  4. android 判断App进程是否存在,处在前台,后台,前后台切换,service是否运行,设置为系统app

    1.判断进程是否存在 //判断是否在主进程,这个方法判断进程名或者pid都可以,如果进程名一样那pid肯定也一样 //true:当前进程是主进程 false:当前进程不是主进程 public bool ...

  5. Android判断App前台运行还是后台运行(运行状态)

    原文:http://p.codekk.com/detail/Android/wenmingvs/AndroidProcess AndroidProcess 项目地址:https://github.co ...

  6. android 判断当前application 是在前台还是在后台

    2019独角兽企业重金招聘Python工程师标准>>> /**      *判断当前应用程序处于前台还是后台      *       * @param context * @ret ...

  7. android5.0以后获取应用运行状态,Android判断App前台运行还是后台运行(运行状态)...

    本文通过图文并茂的方式给大家介绍android判断app状态的相关内容,具体详情如下所示: 要了解这块,首先需要明白一些概念,app,process,task 1.process就是进程,是linux ...

  8. Android 系统(73)---Android判断你的应用在前台还是在后台

    Android判断你的应用在前台还是在后台 /*** 判断应用是否是在后台*/public static boolean isBackground(Context context) {Activity ...

  9. android 判断activity是否在运行,Android 判断某个Activity 是否在前台运行的实例

    如下所示: /** * 判断某个界面是否在前台 * * @param context Context * @param className 界面的类名 * @return 是否在前台显示 */ pub ...

最新文章

  1. Mysql-cluster环境配置
  2. 插入的表单控制下拉框怎么设置_想要告别表单重复填写?这一个功能就够了
  3. DEF CON 专题 | 溜门撬锁,暗黑市集,带你看世界最大的黑客狂欢
  4. MFC用代码创建工具栏
  5. 富士通服务器安装操作系统,富士通平板u盘安装系统教程
  6. win11 通过winget安装/卸载v2raya的命令整理
  7. 编写python程序、计算账户余额_小明有20w存款存在余额宝中,按余额宝年收益为3.35%计算,用Python编写程序计算,多少年后小明的存款达到30w?...
  8. Spark _25 _读取Hive中的数据加载成DataFrame/DataSet(四)
  9. uva 714——Copying Books
  10. ghost linux 全盘拷贝,如何用ghost实现小硬盘对大硬盘的全盘拷贝?
  11. Linux MySQL单实例源码编译安装5.6
  12. log4j配置时的位置问题
  13. HDU2002 计算球体积【入门】
  14. python字符串的比较
  15. 静下来读《一个人的村庄》
  16. 南京航空航天大学计算机考研经验贴
  17. Git:schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT
  18. 最有用的p d f 格式转换软件
  19. 赋值具有的非单一 rhs 维度多于非单一下标数错误的分析和解决方法
  20. GAN论文精读 P2GAN: Posterior Promoted GAN 用鉴别器产生的后验分布来提升生成器

热门文章

  1. [dp][前缀和] Jzoj P5907 轻功(qinggong)
  2. Mysql常用基础命令操作实战
  3. jQuery全选反选实例
  4. 九度oj题目1385:重建二叉树
  5. Delphi编译指令说明
  6. Redis 常用监控信息命令总结
  7. STL 二分查找 upper_bound和lower_bound用法
  8. 201621123021《JAVA程序设计》第五周学习总结
  9. 由java的八个基本数据类型说开去
  10. Picasa——万能图片查看