@@ -701,7 +701,7 @@ public static void startHomeActivity() {
701701 * @return the list of activity
702702 */
703703 public static List <Activity > getActivityList () {
704- return Utils .sActivityList ;
704+ return Utils .getActivityList () ;
705705 }
706706
707707 /**
@@ -739,11 +739,9 @@ public static String getLauncherActivity(@NonNull final String pkg) {
739739 * @return the top activity in activity's stack
740740 */
741741 public static Activity getTopActivity () {
742- if (Utils .sTopActivityWeakRef != null ) {
743- final Activity activity = Utils .sTopActivityWeakRef .get ();
744- if (activity != null ) {
745- return activity ;
746- }
742+ final Activity topActivity = Utils .getActivityList ().getLast ();
743+ if (topActivity != null ) {
744+ return topActivity ;
747745 }
748746 // using reflect to get top activity
749747 try {
@@ -761,9 +759,9 @@ public static Activity getTopActivity() {
761759 if (!pausedField .getBoolean (activityRecord )) {
762760 Field activityField = activityRecordClass .getDeclaredField ("activity" );
763761 activityField .setAccessible (true );
764- Activity topActivity = (Activity ) activityField .get (activityRecord );
765- Utils .setTopActivityWeakRef ( topActivity );
766- return topActivity ;
762+ Activity activity = (Activity ) activityField .get (activityRecord );
763+ Utils .setTopActivity ( activity );
764+ return activity ;
767765 }
768766 }
769767 } catch (ClassNotFoundException e ) {
@@ -777,7 +775,7 @@ public static Activity getTopActivity() {
777775 } catch (NoSuchFieldException e ) {
778776 e .printStackTrace ();
779777 }
780- throw new NullPointerException ( "The top activity is null." ) ;
778+ return null ;
781779 }
782780
783781 /**
@@ -787,7 +785,7 @@ public static Activity getTopActivity() {
787785 * @return {@code true}: yes<br>{@code false}: no
788786 */
789787 public static boolean isActivityExistsInStack (@ NonNull final Activity activity ) {
790- List <Activity > activities = Utils .sActivityList ;
788+ List <Activity > activities = Utils .getActivityList () ;
791789 for (Activity aActivity : activities ) {
792790 if (aActivity .equals (activity )) {
793791 return true ;
@@ -803,7 +801,7 @@ public static boolean isActivityExistsInStack(@NonNull final Activity activity)
803801 * @return {@code true}: yes<br>{@code false}: no
804802 */
805803 public static boolean isActivityExistsInStack (@ NonNull final Class <?> clz ) {
806- List <Activity > activities = Utils .sActivityList ;
804+ List <Activity > activities = Utils .getActivityList () ;
807805 for (Activity aActivity : activities ) {
808806 if (aActivity .getClass ().equals (clz )) {
809807 return true ;
@@ -866,7 +864,7 @@ public static void finishActivity(@NonNull final Class<?> clz) {
866864 * @param isLoadAnim True to use animation for the outgoing activity, false otherwise.
867865 */
868866 public static void finishActivity (@ NonNull final Class <?> clz , final boolean isLoadAnim ) {
869- List <Activity > activities = Utils .sActivityList ;
867+ List <Activity > activities = Utils .getActivityList () ;
870868 for (Activity activity : activities ) {
871869 if (activity .getClass ().equals (clz )) {
872870 activity .finish ();
@@ -889,7 +887,7 @@ public static void finishActivity(@NonNull final Class<?> clz, final boolean isL
889887 public static void finishActivity (@ NonNull final Class <?> clz ,
890888 @ AnimRes final int enterAnim ,
891889 @ AnimRes final int exitAnim ) {
892- List <Activity > activities = Utils .sActivityList ;
890+ List <Activity > activities = Utils .getActivityList () ;
893891 for (Activity activity : activities ) {
894892 if (activity .getClass ().equals (clz )) {
895893 activity .finish ();
@@ -919,7 +917,7 @@ public static boolean finishToActivity(@NonNull final Activity activity,
919917 public static boolean finishToActivity (@ NonNull final Activity activity ,
920918 final boolean isIncludeSelf ,
921919 final boolean isLoadAnim ) {
922- List <Activity > activities = Utils .sActivityList ;
920+ List <Activity > activities = Utils .getActivityList () ;
923921 for (int i = activities .size () - 1 ; i >= 0 ; --i ) {
924922 Activity aActivity = activities .get (i );
925923 if (aActivity .equals (activity )) {
@@ -947,7 +945,7 @@ public static boolean finishToActivity(@NonNull final Activity activity,
947945 final boolean isIncludeSelf ,
948946 @ AnimRes final int enterAnim ,
949947 @ AnimRes final int exitAnim ) {
950- List <Activity > activities = Utils .sActivityList ;
948+ List <Activity > activities = Utils .getActivityList () ;
951949 for (int i = activities .size () - 1 ; i >= 0 ; --i ) {
952950 Activity aActivity = activities .get (i );
953951 if (aActivity .equals (activity )) {
@@ -982,7 +980,7 @@ public static boolean finishToActivity(@NonNull final Class<?> clz,
982980 public static boolean finishToActivity (@ NonNull final Class <?> clz ,
983981 final boolean isIncludeSelf ,
984982 final boolean isLoadAnim ) {
985- List <Activity > activities = Utils .sActivityList ;
983+ List <Activity > activities = Utils .getActivityList () ;
986984 for (int i = activities .size () - 1 ; i >= 0 ; --i ) {
987985 Activity aActivity = activities .get (i );
988986 if (aActivity .getClass ().equals (clz )) {
@@ -1010,7 +1008,7 @@ public static boolean finishToActivity(@NonNull final Class<?> clz,
10101008 final boolean isIncludeSelf ,
10111009 @ AnimRes final int enterAnim ,
10121010 @ AnimRes final int exitAnim ) {
1013- List <Activity > activities = Utils .sActivityList ;
1011+ List <Activity > activities = Utils .getActivityList () ;
10141012 for (int i = activities .size () - 1 ; i >= 0 ; --i ) {
10151013 Activity aActivity = activities .get (i );
10161014 if (aActivity .getClass ().equals (clz )) {
@@ -1042,7 +1040,7 @@ public static void finishOtherActivities(@NonNull final Class<?> clz) {
10421040 */
10431041 public static void finishOtherActivities (@ NonNull final Class <?> clz ,
10441042 final boolean isLoadAnim ) {
1045- List <Activity > activities = Utils .sActivityList ;
1043+ List <Activity > activities = Utils .getActivityList () ;
10461044 for (int i = activities .size () - 1 ; i >= 0 ; i --) {
10471045 Activity activity = activities .get (i );
10481046 if (!activity .getClass ().equals (clz )) {
@@ -1063,7 +1061,7 @@ public static void finishOtherActivities(@NonNull final Class<?> clz,
10631061 public static void finishOtherActivities (@ NonNull final Class <?> clz ,
10641062 @ AnimRes final int enterAnim ,
10651063 @ AnimRes final int exitAnim ) {
1066- List <Activity > activities = Utils .sActivityList ;
1064+ List <Activity > activities = Utils .getActivityList () ;
10671065 for (int i = activities .size () - 1 ; i >= 0 ; i --) {
10681066 Activity activity = activities .get (i );
10691067 if (!activity .getClass ().equals (clz )) {
@@ -1085,7 +1083,7 @@ public static void finishAllActivities() {
10851083 * @param isLoadAnim True to use animation for the outgoing activity, false otherwise.
10861084 */
10871085 public static void finishAllActivities (final boolean isLoadAnim ) {
1088- List <Activity > activityList = Utils .sActivityList ;
1086+ List <Activity > activityList = Utils .getActivityList () ;
10891087 for (int i = activityList .size () - 1 ; i >= 0 ; --i ) {// remove from top
10901088 Activity activity = activityList .get (i );
10911089 // sActivityList remove the index activity at onActivityDestroyed
@@ -1106,7 +1104,7 @@ public static void finishAllActivities(final boolean isLoadAnim) {
11061104 */
11071105 public static void finishAllActivities (@ AnimRes final int enterAnim ,
11081106 @ AnimRes final int exitAnim ) {
1109- List <Activity > activityList = Utils .sActivityList ;
1107+ List <Activity > activityList = Utils .getActivityList () ;
11101108 for (int i = activityList .size () - 1 ; i >= 0 ; --i ) {// remove from top
11111109 Activity activity = activityList .get (i );
11121110 // sActivityList remove the index activity at onActivityDestroyed
@@ -1128,7 +1126,7 @@ public static void finishAllActivitiesExceptNewest() {
11281126 * @param isLoadAnim True to use animation for the outgoing activity, false otherwise.
11291127 */
11301128 public static void finishAllActivitiesExceptNewest (final boolean isLoadAnim ) {
1131- List <Activity > activities = Utils .sActivityList ;
1129+ List <Activity > activities = Utils .getActivityList () ;
11321130 for (int i = activities .size () - 2 ; i >= 0 ; i --) {
11331131 finishActivity (activities .get (i ), isLoadAnim );
11341132 }
@@ -1144,7 +1142,7 @@ public static void finishAllActivitiesExceptNewest(final boolean isLoadAnim) {
11441142 */
11451143 public static void finishAllActivitiesExceptNewest (@ AnimRes final int enterAnim ,
11461144 @ AnimRes final int exitAnim ) {
1147- List <Activity > activities = Utils .sActivityList ;
1145+ List <Activity > activities = Utils .getActivityList () ;
11481146 for (int i = activities .size () - 2 ; i >= 0 ; i --) {
11491147 finishActivity (activities .get (i ), enterAnim , exitAnim );
11501148 }
0 commit comments