Android开发中,有时候需要判断App是否在前台运行。
代码实现如下:
方法1
private boolean isRunningForeground (Context context)
{
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(getPackageName()))
{
return true ;
}
return false ;
}
方法2
private boolean isAppOnForeground(Context context) {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasksInfo = manager.getRunningTasks(1);
if (tasksInfo.size() > 0) {
// 应用程序位于堆栈的顶层
String src = context.getPackageName();
String des = tasksInfo.get(0).topActivity.getPackageName();
if (src.equalsIgnoreCase(des)) {
return true;
}
}
return false;
}
注意:
AndroidManifest.xml中需增加
<
uses-permission
android:name
=
“android.permission.GET_TASKS”
/>