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”
/>