|
@@ -10,7 +10,6 @@ import android.os.Bundle;
|
|
|
import android.util.Log;
|
|
|
|
|
|
import androidx.annotation.RequiresPermission;
|
|
|
-import androidx.fragment.app.FragmentActivity;
|
|
|
|
|
|
import java.lang.ref.WeakReference;
|
|
|
import java.util.List;
|
|
@@ -22,11 +21,11 @@ import java.util.Stack;
|
|
|
*/
|
|
|
public class ActivityManagerUtil {
|
|
|
|
|
|
- private static Stack<WeakReference<FragmentActivity>> activityStack;
|
|
|
+ private static Stack<WeakReference<Activity>> activityStack;
|
|
|
private static ActivityManagerUtil instance;
|
|
|
|
|
|
private ActivityManagerUtil() {
|
|
|
- activityStack = new Stack<WeakReference<FragmentActivity>>();
|
|
|
+ activityStack = new Stack<WeakReference<Activity>>();
|
|
|
}
|
|
|
|
|
|
public static ActivityManagerUtil get() {
|
|
@@ -49,7 +48,7 @@ public class ActivityManagerUtil {
|
|
|
*/
|
|
|
public int size() {
|
|
|
if (activityStack == null) {
|
|
|
- activityStack = new Stack<WeakReference<FragmentActivity>>();
|
|
|
+ activityStack = new Stack<WeakReference<Activity>>();
|
|
|
}
|
|
|
return activityStack.size();
|
|
|
}
|
|
@@ -60,7 +59,7 @@ public class ActivityManagerUtil {
|
|
|
* @param cls
|
|
|
* @return
|
|
|
*/
|
|
|
- public boolean hasActivity(Class<? extends FragmentActivity> cls) {
|
|
|
+ public boolean hasActivity(Class<? extends Activity> cls) {
|
|
|
for (int i = 0; i < activityStack.size(); i++) {
|
|
|
if (activityStack.get(i) != null & activityStack.get(i).get() != null && activityStack.get(i).get().getClass().equals(cls)) {
|
|
|
return true;
|
|
@@ -72,16 +71,16 @@ public class ActivityManagerUtil {
|
|
|
/**
|
|
|
* 获取指定的Activity
|
|
|
*/
|
|
|
- public static FragmentActivity getActivity(Class<? extends FragmentActivity> cls) {
|
|
|
- WeakReference<FragmentActivity> weakReference = findWeakByActivityCls(cls);
|
|
|
+ public static Activity getActivity(Class<? extends Activity> cls) {
|
|
|
+ WeakReference<Activity> weakReference = findWeakByActivityCls(cls);
|
|
|
if (weakReference != null) {
|
|
|
return weakReference.get();
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- private static WeakReference<FragmentActivity> findWeakByActivity(FragmentActivity activity) {
|
|
|
- for (WeakReference<FragmentActivity> weakReference : activityStack) {
|
|
|
+ private static WeakReference<Activity> findWeakByActivity(Activity activity) {
|
|
|
+ for (WeakReference<Activity> weakReference : activityStack) {
|
|
|
if (weakReference.get() != null && weakReference.get() == activity) {
|
|
|
return weakReference;
|
|
|
}
|
|
@@ -89,8 +88,8 @@ public class ActivityManagerUtil {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- private static WeakReference<FragmentActivity> findWeakByActivityCls(Class<? extends FragmentActivity> activityClass) {
|
|
|
- for (WeakReference<FragmentActivity> weakReference : activityStack) {
|
|
|
+ private static WeakReference<Activity> findWeakByActivityCls(Class<? extends Activity> activityClass) {
|
|
|
+ for (WeakReference<Activity> weakReference : activityStack) {
|
|
|
if (weakReference.get() != null && weakReference.get().getClass().equals(activityClass)) {
|
|
|
return weakReference;
|
|
|
}
|
|
@@ -103,9 +102,9 @@ public class ActivityManagerUtil {
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
- public FragmentActivity currentActivity() {
|
|
|
+ public Activity currentActivity() {
|
|
|
if (!activityStack.isEmpty()) {
|
|
|
- WeakReference<FragmentActivity> temp = activityStack.lastElement();
|
|
|
+ WeakReference<Activity> temp = activityStack.lastElement();
|
|
|
if (temp.get() != null) {
|
|
|
return temp.get();
|
|
|
}
|
|
@@ -117,7 +116,7 @@ public class ActivityManagerUtil {
|
|
|
* 销毁栈顶的activity
|
|
|
*/
|
|
|
public void finishTopActivity() {
|
|
|
- WeakReference<FragmentActivity> activity = activityStack.lastElement();
|
|
|
+ WeakReference<Activity> activity = activityStack.lastElement();
|
|
|
if (activity != null && activity.get() != null) {
|
|
|
activity.get().finish();
|
|
|
|
|
@@ -130,9 +129,9 @@ public class ActivityManagerUtil {
|
|
|
*
|
|
|
* @param activityClass
|
|
|
*/
|
|
|
- public void finishActivity(Class<? extends FragmentActivity> activityClass) {
|
|
|
+ public void finishActivity(Class<? extends Activity> activityClass) {
|
|
|
for (int i = 0; i < activityStack.size(); i++) {
|
|
|
- WeakReference<FragmentActivity> activity = activityStack.elementAt(i);
|
|
|
+ WeakReference<Activity> activity = activityStack.elementAt(i);
|
|
|
if (activity != null && activity.get() != null && activity.get().getClass().equals(activityClass)) {
|
|
|
finishActivity(activity.get());
|
|
|
return;
|
|
@@ -145,9 +144,9 @@ public class ActivityManagerUtil {
|
|
|
*
|
|
|
* @param activity
|
|
|
*/
|
|
|
- public void finishActivity(FragmentActivity activity) {
|
|
|
+ public void finishActivity(Activity activity) {
|
|
|
if (activity != null) {
|
|
|
- WeakReference<FragmentActivity> weakReference = findWeakByActivity(activity);
|
|
|
+ WeakReference<Activity> weakReference = findWeakByActivity(activity);
|
|
|
if (weakReference != null) {
|
|
|
if (weakReference.get() != null) {
|
|
|
weakReference.get().finish();
|
|
@@ -164,7 +163,7 @@ public class ActivityManagerUtil {
|
|
|
if (activityStack == null || activityStack.isEmpty()) {
|
|
|
return;
|
|
|
}
|
|
|
- for (WeakReference<FragmentActivity> weakReference : activityStack) {
|
|
|
+ for (WeakReference<Activity> weakReference : activityStack) {
|
|
|
if (weakReference != null && weakReference.get() != null) {
|
|
|
weakReference.get().finish();
|
|
|
}
|
|
@@ -183,7 +182,7 @@ public class ActivityManagerUtil {
|
|
|
if (size() <= 1) {
|
|
|
break;
|
|
|
}
|
|
|
- FragmentActivity activity = currentActivity();
|
|
|
+ Activity activity = currentActivity();
|
|
|
if (activity == null) {
|
|
|
break;
|
|
|
}
|
|
@@ -196,7 +195,7 @@ public class ActivityManagerUtil {
|
|
|
*
|
|
|
* @param cls
|
|
|
*/
|
|
|
- public void popAllActivityExceptOne(Class<? extends FragmentActivity> cls) {
|
|
|
+ public void popAllActivityExceptOne(Class<? extends Activity> cls) {
|
|
|
if (activityStack.isEmpty()) {
|
|
|
return;
|
|
|
}
|
|
@@ -206,7 +205,7 @@ public class ActivityManagerUtil {
|
|
|
if (i >= size) {
|
|
|
return;
|
|
|
}
|
|
|
- WeakReference<FragmentActivity> weakReference = activityStack.get(i);
|
|
|
+ WeakReference<Activity> weakReference = activityStack.get(i);
|
|
|
i++;
|
|
|
if (weakReference == null || weakReference.get() == null) {
|
|
|
i--;
|
|
@@ -247,14 +246,14 @@ public class ActivityManagerUtil {
|
|
|
*
|
|
|
* @param activity
|
|
|
*/
|
|
|
- private void pushActivity(FragmentActivity activity) {
|
|
|
+ private void pushActivity(Activity activity) {
|
|
|
Log.i("ActivityManager", "当前入栈activity ===>>>" + activity.getClass().getSimpleName());
|
|
|
if (activityStack == null) {
|
|
|
- activityStack = new Stack<WeakReference<FragmentActivity>>();
|
|
|
+ activityStack = new Stack<WeakReference<Activity>>();
|
|
|
}
|
|
|
- WeakReference<FragmentActivity> item = findWeakByActivity(activity);
|
|
|
+ WeakReference<Activity> item = findWeakByActivity(activity);
|
|
|
if (item == null) {
|
|
|
- activityStack.add(new WeakReference<FragmentActivity>(activity));
|
|
|
+ activityStack.add(new WeakReference<Activity>(activity));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -263,9 +262,9 @@ public class ActivityManagerUtil {
|
|
|
*
|
|
|
* @param activity
|
|
|
*/
|
|
|
- private void removeActivity(FragmentActivity activity) {
|
|
|
+ private void removeActivity(Activity activity) {
|
|
|
Log.i("ActivityManager", "当前出栈activity ===>>>" + activity.getClass().getSimpleName());
|
|
|
- for (WeakReference<FragmentActivity> weakReference : activityStack) {
|
|
|
+ for (WeakReference<Activity> weakReference : activityStack) {
|
|
|
if (weakReference != null && weakReference.get() != null && weakReference.get() == activity) {
|
|
|
activityStack.remove(weakReference);
|
|
|
return;
|
|
@@ -277,7 +276,7 @@ public class ActivityManagerUtil {
|
|
|
|
|
|
@Override
|
|
|
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
|
|
|
- pushActivity((FragmentActivity) activity);
|
|
|
+ pushActivity((Activity) activity);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -307,7 +306,7 @@ public class ActivityManagerUtil {
|
|
|
|
|
|
@Override
|
|
|
public void onActivityDestroyed(Activity activity) {
|
|
|
- removeActivity((FragmentActivity) activity);
|
|
|
+ removeActivity((Activity) activity);
|
|
|
}
|
|
|
}
|
|
|
|