Files
MoGoEagleEye/foudations/mogo-utils/src/main/java/com/mogo/utils/ActivityStack.java
2019-12-23 15:08:04 +08:00

84 lines
2.4 KiB
Java

package com.mogo.utils;
import android.app.Activity;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Iterator;
public class ActivityStack {
private static final Deque< Activity > ACTIVITY_STACK = new ArrayDeque<>();
public static synchronized void addActivity( Activity activity) {
if(activity != null){
ACTIVITY_STACK.offer(activity);
}
}
public static synchronized Activity currentActivity() {
return ACTIVITY_STACK.peekLast();
}
public static synchronized void finishCurrentActivity() {
Activity activity = ACTIVITY_STACK.pop();
if (!activity.isFinishing()) {
activity.finish();
}
}
public static synchronized void finishActivity( Activity activity) {
ACTIVITY_STACK.remove(activity);
if (!activity.isFinishing()) {
activity.finish();
}
}
public static synchronized void finishActivity( Class<? extends Activity > cls) {
Iterator< Activity > iterator = ACTIVITY_STACK.iterator();
while (iterator.hasNext()) {
Activity next = iterator.next();
if(next.getClass().equals(cls)){
iterator.remove();
if(!next.isFinishing()){
next.finish();
}
}
}
}
public static synchronized void finishActivityExcept( Class<?> cls) {
Iterator< Activity > iterator = ACTIVITY_STACK.iterator();
while (iterator.hasNext()) {
Activity next = iterator.next();
if (!next.getClass().equals(cls)) {
iterator.remove();
if(!next.isFinishing()){
next.finish();
}
}
}
}
public static synchronized void finishAllActivity() {
Iterator< Activity > iterator = ACTIVITY_STACK.iterator();
while (iterator.hasNext()) {
iterator.remove();
Activity next = iterator.next();
if(!next.isFinishing()){
next.finish();
}
}
}
public static synchronized boolean isActivityExist( Class<? extends Activity > cls){
Iterator< Activity > iterator = ACTIVITY_STACK.iterator();
while (iterator.hasNext()) {
Activity next = iterator.next();
if(next.getClass().equals(cls)){
return true;
}
}
return false;
}
}