有时候打开其他应用的界面,在界面未销毁之前打开会出现异常,即使该界面的启动方式为singleInstance也会有一些问题(我遇到的是activity中在子线程里打开相机等硬件在连续打开此activity时会挂掉),这时最简单的方法就是判断此activity是否在前台,在就不需要打开。
需要权限:
<uses-permission android:name="android.permission.GET_TASKS"/>
private boolean isActivityForeground(String className) {
return isForeground(getApplicationContext(), className);
}
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<ActivityManager.RunningTaskInfo> 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;
}
网友评论