android 判断进程是否处于前台
来源:互联网 发布:火焰特效软件 编辑:程序博客网 时间:2024/05/31 13:17
今天,简单讲讲如何判断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;//应用是否处于前端 @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { } @Override public void onActivityStarted(Activity activity) { } @Override public void onActivityResumed(Activity activity) { isForeground = true; } @Override public void onActivityPaused(Activity activity) { isForeground = false; } @Override public void onActivityStopped(Activity activity) { } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { } public boolean isForeground() { return isForeground; }}
android 判断进程是否处于前台就讲完了。
就这么简单。
阅读全文
0 0
- android 判断进程是否处于前台
- Android=判断当前是否处于前台
- Android如何实现对APP是否处于前台的判断?
- 判断当前应用程序是否处于前台
- Android判断应用程序处于前台还后台
- Android判断当前应用程序处于前台
- Android 判断程序处于前台或者后台
- Android判断应用程序处于前台还后台
- 判断应用是否处于前台的六种方法优缺点?
- 利用Activity生命周期变化判断Activity是否处于前台
- android5.0以上判断APP是否处于前台问题
- 舒服的判断当前应用是否处于前台
- Android判断当前应用程序处于前台还是后台
- 判断当前应用程序处于前台还是后台 ANDROID
- Android判断当前应用程序处于前台还是后台
- Android网络状态的监听+判断是否前台进程+ListView的滚动底部
- Android判断当前的android设备是否处于联网状态
- Android判断应用是否位于前台
- LuoguP1572 计算分数 解题报告【模拟】
- 软件测试人员必备网络知识(二):什么是Session?Cookie与Session之间有哪些区别?
- 关联规则Apriori
- java实现十进制转化二进制
- Sql语句Convert函数获取时间格式的一种用法
- android 判断进程是否处于前台
- Excel单元格首位数字为“0”不显示的问题
- hihoCoder之KMP算法
- VHDL 疑难解答
- Tarjan算法详解
- 第四组-2017.10.31
- 大数据基础设施建设需要得到重视 | 记清华大数据“应用·创新”讲座
- 数据湖架构—读书笔记[2]--数据的生命周期
- java多线程学习体系