Android判断当前应用程序处于前台还是后台的两种方法
2016-01-26 10:12
519 查看
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类判断(不需要额外权限):
public static boolean isBackground(Context context) {
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
for (RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.processName.equals(context.getPackageName())) {
if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
Log.i("后台", appProcess.processName);
return true;
}else{
Log.i("前台", appProcess.processName);
return false;
}
}
}
return false;
}
/**
*判断当前应用程序处于前台还是后台
*/
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类判断(不需要额外权限):
public static boolean isBackground(Context context) {
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
for (RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.processName.equals(context.getPackageName())) {
if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
Log.i("后台", appProcess.processName);
return true;
}else{
Log.i("前台", appProcess.processName);
return false;
}
}
}
return false;
}
相关文章推荐
- Android5.0之Palette简单实用
- Android项目及编码的规范
- Android开发--圆角 Button 按钮 xml 实现
- Android源码编译选项eng、user、userdebug的区别
- Android开发--拍照选择照片裁剪
- Android 重复安装
- Android应用开发:CardView的使用及兼容
- Android实现ListView首行距离屏幕边缘距离
- android NullPointerException: println needs a message
- Android 界面ListView使用
- MAC中设置android adb环境变量
- Android中图片转化为bitmap
- 安卓常用adb命令
- android新技术学习(1)-2016年,这些Android技术会很火
- Android-带有切换动画的CheckBox
- 如何在mac本上安装android sdk
- 关于android 和 耗时操作的一点理解
- android中信息列表的下拉刷新和下拉加载
- Android开发优化之——使用软引用和弱引用
- Android5.0适配——水波纹点击效果