版權聲明:本文爲Mr.release原創文章,轉載請標明出處
封裝堆棧管理類AppManager
public class AppManager {
private static Stack<Activity> activityStack = new Stack<>();
private static AppManager instance;
private AppManager() {
throw new UnsupportedOperationException("u can't instantiate me...");
}
/**
* 獲取Activity棧數量
*/
public static int getActivitySize() {
return activityStack.size();
}
/**
* 添加Activity到堆棧
*/
public void addActivity(Activity activity) {
if (activityStack == null) {
activityStack = new Stack<Activity>();
}
activityStack.add(activity);
}
/**
* 獲取當前Activity(堆棧中最後一個壓入的)
*/
public Activity currentActivity() {
Activity activity = activityStack.lastElement();
return activity;
}
/**
* 結束當前Activity(堆棧中最後一個壓入的)
*/
public void finishActivity() {
Activity activity = activityStack.lastElement();
finishActivity(activity);
}
/**
* 結束指定的Activity
*/
public void finishActivity(Activity activity) {
if (activity != null) {
activityStack.remove(activity);
activity.finish();
activity = null;
}
}
/**
* 結束指定類名的Activity
*/
public void finishActivity(Class<?> cls) {
try {
for (Activity activity : activityStack) {
if (activity.getClass().equals(cls)) {
finishActivity(activity);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 結束除指定Activity之外的所有Activity
*/
public static void finishAllActivity(Class<?> cls) {
for (Activity activity : activityStack) {
if (activity != null) {
if (!activity.getClass().equals(cls)) {
activity.finish();
}
}
}
}
/**
* 結束所有Activity
*/
public void finishAllActivity() {
try {
if (activityStack == null) {
return;
}
for (Activity activity : activityStack) {
if (activity != null) {
activity.finish();
}
}
activityStack.clear();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 獲取指定的Activity
*/
public static Activity getActivity(Class<?> cls) {
if (activityStack != null)
for (Activity activity : activityStack) {
if (activity.getClass().equals(cls)) {
return activity;
}
}
return null;
}
/**
* 結束除了主頁其他所有Activity
*/
public void finishOtherAllActivity() {
try {
for (int i = 1, size = activityStack.size(); i < size; i++) {
if (null != activityStack.get(i)) {
activityStack.get(i).finish();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 從堆棧中移除指定Activity
*
* @param activity
*/
public void remove(Activity activity) {
if (activityStack.size() > 0 && activity == activityStack.peek())
activityStack.pop();
else
activityStack.remove(activity);
}
/**
* 退出應用程序
*/
public void AppExit(Context context) {
try {
finishAllActivity();
ActivityManager activityMgr = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
if (android.os.Build.VERSION.SDK_INT < 8) {
activityMgr.restartPackage(context.getPackageName());
} else {
activityMgr.killBackgroundProcesses(context.getPackageName());
}
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
}
}