转载请备注原文地址: https://www.niwoxuexi.com/blog/android00/article/223.html

我们在Android开发过程中,经常会判断Activity是否在前台显示,来处理某些状态,这里谢了一个静态方法,供大家参考。

方法一:用ActivityManager管理的Activity栈来操作

publicclassCommonUtil{/***判断某个Activity界面是否在前台*@paramcontext*@paramclassName某个界面名称*@return*/publicstaticbooleanisForeground(Contextcontext,StringclassName){if(context==null||TextUtils.isEmpty(className)){returnfalse;}ActivityManageram=(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);List<ActivityManager.RunningTaskInfo>list=am.getRunningTasks(1);if(list!=null&&list.size()>0){ComponentNamecpn=list.get(0).topActivity;if(className.equals(cpn.getClassName())){returntrue;}}returnfalse;}}

注意:在 AndroidManifest.xml 文件中添加权限,否则会报错

<uses-permissionandroid:name="android.permission.GET_TASKS"/>

方法二、 在OnResume,和OnPause中记录一个变量

privatebolleanisFront=false;@OverridepublicvoidonResume(){super.onResume();isFront=true;}@OverridepublicvoidonPause(){super.onPause();isFront=false;}