@@ -952,24 +952,23 @@ public static boolean finishToActivity(@NonNull final Class<?> clz,
952952 }
953953
954954 /**
955- * 结束除最新之外的同类型 Activity
956- * <p>也就是让栈中最多只剩下一种类型的 Activity</p>
955+ * 结束所有其他类型的 Activity
957956 *
958957 * @param clz Activity 类
959958 */
960- public static void finishOtherActivitiesExceptNewest (@ NonNull final Class <?> clz ) {
961- finishOtherActivitiesExceptNewest (clz , false );
959+ public static void finishOtherActivities (@ NonNull final Class <?> clz ) {
960+ finishOtherActivities (clz , false );
962961 }
963962
963+
964964 /**
965- * 结束除最新之外的同类型 Activity
966- * <p>也就是让栈中最多只剩下一种类型的 Activity</p>
965+ * 结束所有其他类型的 Activity
967966 *
968967 * @param clz Activity 类
969968 * @param isLoadAnim 是否启动动画
970969 */
971- public static void finishOtherActivitiesExceptNewest (@ NonNull final Class <?> clz ,
972- final boolean isLoadAnim ) {
970+ public static void finishOtherActivities (@ NonNull final Class <?> clz ,
971+ final boolean isLoadAnim ) {
973972 List <Activity > activities = Utils .sActivityList ;
974973 boolean flag = false ;
975974 for (int i = activities .size () - 1 ; i >= 0 ; i --) {
@@ -980,21 +979,22 @@ public static void finishOtherActivitiesExceptNewest(@NonNull final Class<?> clz
980979 } else {
981980 flag = true ;
982981 }
982+ } else {
983+ finishActivity (activity , isLoadAnim );
983984 }
984985 }
985986 }
986987
987988 /**
988- * 结束除最新之外的同类型 Activity
989- * <p>也就是让栈中最多只剩下一种类型的 Activity</p>
989+ * 结束所有其他类型的 Activity
990990 *
991991 * @param clz Activity 类
992992 * @param enterAnim 入场动画
993993 * @param exitAnim 出场动画
994994 */
995- public static void finishOtherActivitiesExceptNewest (@ NonNull final Class <?> clz ,
996- @ AnimRes final int enterAnim ,
997- @ AnimRes final int exitAnim ) {
995+ public static void finishOtherActivities (@ NonNull final Class <?> clz ,
996+ @ AnimRes final int enterAnim ,
997+ @ AnimRes final int exitAnim ) {
998998 List <Activity > activities = Utils .sActivityList ;
999999 boolean flag = false ;
10001000 for (int i = activities .size () - 1 ; i >= 0 ; i --) {
@@ -1005,6 +1005,8 @@ public static void finishOtherActivitiesExceptNewest(@NonNull final Class<?> clz
10051005 } else {
10061006 flag = true ;
10071007 }
1008+ } else {
1009+ finishActivity (activity , enterAnim , exitAnim );
10081010 }
10091011 }
10101012 }
@@ -1038,7 +1040,8 @@ public static void finishAllActivities(final boolean isLoadAnim) {
10381040 * @param enterAnim 入场动画
10391041 * @param exitAnim 出场动画
10401042 */
1041- public static void finishAllActivities (@ AnimRes final int enterAnim , @ AnimRes final int exitAnim ) {
1043+ public static void finishAllActivities (@ AnimRes final int enterAnim ,
1044+ @ AnimRes final int exitAnim ) {
10421045 List <Activity > activityList = Utils .sActivityList ;
10431046 for (int i = activityList .size () - 1 ; i >= 0 ; --i ) {// 从栈顶开始移除
10441047 Activity activity = activityList .get (i );
@@ -1047,6 +1050,41 @@ public static void finishAllActivities(@AnimRes final int enterAnim, @AnimRes fi
10471050 }
10481051 }
10491052
1053+ /**
1054+ * 结束除最新之外的所有 Activity
1055+ */
1056+ public static void finishAllActivitiesExceptNewest () {
1057+ finishAllActivitiesExceptNewest (false );
1058+ }
1059+
1060+ /**
1061+ * 结束除最新之外的所有 Activity
1062+ *
1063+ * @param isLoadAnim 是否启动动画
1064+ */
1065+ public static void finishAllActivitiesExceptNewest (final boolean isLoadAnim ) {
1066+ List <Activity > activities = Utils .sActivityList ;
1067+ boolean flag = false ;
1068+ for (int i = activities .size () - 2 ; i >= 0 ; i --) {
1069+ finishActivity (activities .get (i ), isLoadAnim );
1070+ }
1071+ }
1072+
1073+ /**
1074+ * 结束除最新之外的所有 Activity
1075+ *
1076+ * @param enterAnim 入场动画
1077+ * @param exitAnim 出场动画
1078+ */
1079+ public static void finishAllActivitiesExceptNewest (@ AnimRes final int enterAnim ,
1080+ @ AnimRes final int exitAnim ) {
1081+ List <Activity > activities = Utils .sActivityList ;
1082+ boolean flag = false ;
1083+ for (int i = activities .size () - 2 ; i >= 0 ; i --) {
1084+ finishActivity (activities .get (i ), enterAnim , exitAnim );
1085+ }
1086+ }
1087+
10501088 private static Context getActivityOrApp () {
10511089 Activity topActivity = getTopActivity ();
10521090 return topActivity == null ? Utils .getApp () : topActivity ;
0 commit comments