要解决按下返回按钮时,启动自定义活动会导致活动启动两次的问题,可以使用以下方法:
ActivityManager
的getRunningTasks()
方法获取当前运行的任务列表,然后遍历任务列表,检查是否已经有相同的活动实例。private boolean isActivityRunning(Class> activityClass) {
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List runningTasks = activityManager.getRunningTasks(Integer.MAX_VALUE);
for (ActivityManager.RunningTaskInfo taskInfo : runningTasks) {
if (taskInfo.baseActivity.getClassName().equals(activityClass.getName())) {
return true;
}
}
return false;
}
if (isActivityRunning(CustomActivity.class)) {
Intent intent = new Intent(this, CustomActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
} else {
Intent intent = new Intent(this, CustomActivity.class);
startActivity(intent);
}
这样做的效果是,如果自定义活动已经在栈中存在,则将其移到栈顶,即重新显示该活动;如果自定义活动不在栈中,则创建一个新的实例并启动。
注意:上述方法仅适用于解决按下返回按钮时启动自定义活动导致活动启动两次的问题。如果是其他情况导致的活动启动两次,可能需要根据具体情况进行调整。