版权声明:本文为博主原创文章,未经博主允许不得转载。//当前应用是否处于前台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();

但上面的方法有的机型不支持,下面这个方法还是比较靠谱的,但需要一个权限
< uses-permission Android:name =“android.permission.GET_TASKS” />//当前应用是否处于前台private boolean isForeground(Context context) {if (context != null) {ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);ComponentName cn = am.getRunningTasks(1).get(0).topActivity;String currentPackageName = cn.getPackageName();if (!TextUtils.isEmpty(currentPackageName) && currentPackageName.equals(context.getPackageName())) {return true;}return false;}return false;}版本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;}
}

转载于:https://www.cnblogs.com/Free-Thinker/p/6698549.html

Android判断App是否在前台运行相关推荐

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

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

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

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

  3. Android怎样判断APP是64位运行,还是32位运行?

    标签:安卓怎样判断APP是64位运行,还是32位运行? 有下面两个方法,都可判断. 方法一: 参考: https://blog.csdn.net/u010194271/article/details/ ...

  4. Android 判断App运行在模拟器还是真机上的最终解决方案

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/qq_39731011/article ...

  5. android 判断进程是否处于前台

    今天,简单讲讲如何判断android 的进程是否处于前台. 1.通过RunningTaskInfo类判断(需要额外权限): /***判断当前应用程序处于前台还是后台*/public static bo ...

  6. 安卓判断APP是在前台还是在后台

    安卓中判断APP是否在前台: 方法一:CCApplication 中判断 private boolean mIsInForeground = false; public boolean isInFor ...

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

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

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

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

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

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

  10. android判断app前后台状态

    项目中需要在应用从后台切换到前台时做操作,自己实现了功能,但对这块的机制不太了解,So.找了相关的资料来学习总结下. !!! 部分资料来源https://github.com/wenmingvs/An ...

最新文章

  1. CUDA Samples: Streams' usage
  2. Android之热修复框架Nuwa
  3. C++中list的使用方法及常用list操作总结
  4. 阅读准备-构建redis容器
  5. Android中使用SeekBar拖动条实现改变图片透明度
  6. hikari数据源配置类_Spring中的“多数据源”之详解
  7. 数据结构---判断一棵树是否是二叉搜索树
  8. WebView 和JS 之间交互
  9. linux内核ddr初始化,X-007-UBOOT-DDR的初始化(Bubblegum-96平台)
  10. 【华为云技术分享】MySQL Seconds_Behind_Master简要分析
  11. 基于JAVA+SpringMVC+Mybatis+MYSQL的高校社团管理系统
  12. 实战HTML:登陆界面的实现
  13. Python简明教程之后应该学什么?
  14. 爱德泰科普 | 了解单模光纤跳线和多模光纤跳线,看着一篇就够了
  15. 站在巨人肩膀上的牛顿:Kubernetes和SAP Kyma
  16. 手把手教你用jQuery Mobile做相册
  17. 学习笔记(12):A110测试-测试课程申请1888
  18. Unity 3D网页游戏产品展示
  19. 【Linux】压缩与解压zip
  20. 海航控股公布重整计划 海航“航”向何方?

热门文章

  1. 协同过滤推荐算法的用户向量相似度计算
  2. 一些有趣的 CSS 魔法和布局(下)(结尾有岗位内推哦~)
  3. IDEA 中git使用非默认ssh客户端进行登录
  4. (原創) 無論設計軟體硬體,拿到spec後,第一件事情就是model (OO)
  5. 对比了6家交易所的下币规则,我们发现……
  6. GitLab Docker 前端开发工具链
  7. IOCP的Demo及说明
  8. [安卓学习]AndroidManifest.xml文件内容详解
  9. [转载] 七龙珠第一部——第061话 塔上的卡林神
  10. Redis 6.0 源码阅读笔记(7) -- ZSet 数据类型源码分析