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

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

public class CommonUtil{

/**

* 判断某个Activity 界面是否在前台

* @param context

* @param className 某个界面名称

* @return

*/

public static boolean isForeground(Context context, String className) {

if (context == null || TextUtils.isEmpty(className)) {

return false;

}

ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

List list = am.getRunningTasks(1);

if (list != null && list.size() > 0) {

ComponentName cpn = list.get(0).topActivity;

if (className.equals(cpn.getClassName())) {

return true;

}

}

return false;

}

}

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

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

private bollean isFront = false;

@Override

public void onResume() {

super.onResume();

isFront = true;

}

@Override

public void onPause() {

super.onPause();

isFront = false;

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐