您的位置:首页 > 移动开发

Activity堆栈管理器 以及 应用退出的两种方案

2017-04-12 09:58 183 查看
import android.app.Activity;
import android.content.Intent;
import com.xd.ap.ui.SplashActivity;
import java.util.Stack;

/**
* @author AcmenXD
* @version v1.0
* @github https://github.com/AcmenXD * @date 2017/3/13 15:29
* @detail Activity堆栈管理器
*/
public enum ActivityStackManager {
INSTANCE;

private static Stack<Activity> activityStack;

/**
* 获取当前Activity
*/
public Activity currentActivity() {
Activity activity = activityStack.lastElement();
return activity;
}

/**
* 添加一个Activity
*/
public void addActivity(Activity activity) {
if (activityStack == null) {
activityStack = new Stack<Activity>();
}
activityStack.add(activity);
}

/**
* 移除一个Activity
*/
public void removeActivity(Activity activity) {
if (activityStack == null) {
activityStack = new Stack<Activity>();
}
activityStack.remove(activity);
}

/**
* 结束当前Activity
*/
public void finishActivity() {
Activity activity = activityStack.lastElement();
finishActivity(activity);
}

/**
* 结束一个Activity
*/
public void finishActivity(Activity activity) {
if (activity != null) {
removeActivity(activity);
activity.finish();
activity = null;
}
}

/**
* 结束一个Activity,根据class
*/
public void finishActivity(Class<?> cls) {
for (Activity activity : activityStack) {
if (activity.getClass().equals(cls)) {
finishActivity(activity);
}
}
}

/**
* 结束所有Activity
*/
public void finishAllActivity() {
for (Activity activity : activityStack) {
if (null != activity) {
activity.finish();
}
}
activityStack.clear();
}

/**
* 退出应用程序 -> 杀进程
*/
public void exit() {
exit2();
android.os.Process.killProcess(android.os.Process.myPid());
}

/**
* 退出应用程序 -> 不杀进程,只是关掉所有Activity
*/
public void exit2() {
finishAllActivity();
}
}


使用方式

// 将此Activity添加到ActivityStackManager中管理
ActivityStackManager.INSTANCE.addActivity(this);
// 将此Activity在ActivityStackManager中移除
ActivityStackManager.INSTANCE.removeActivity(this);
// 退出应用程序
ActivityStackManager.INSTANCE.exit();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐