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

Android 退出应用几种方式

2016-12-03 10:14 435 查看
虽说网上一百度一大堆,还是给自己整理整理。

1、也就是我最开始使用的。

System.exit(0);


此方法,在项目里,我是有遇到问题的,退出的时候不定时的会出现一些其他问题。

2、次方法比较粗暴,也是比较野的一个路子,ps:看到代码千万不要打我啊。

private void killProcess() {
throw new NullPointerException();
}


在主页面调用这个方法,异常可以随便抛,这里只是演示(项目里,主页面的启动方式基本都是singleTask吧,反正我的项目都是,所以在主页面抛异常是可以实现效果的。)

3、杀进程的方法

Process.killProcess(Process.myPid())


1、2、3这三种方法在我看来都是粗暴的。

4、采用Stack管理所以Activity

Stack:堆栈管理。为什么要用堆栈管理,而不用其他的方式去管理,我曾在纠结这个问题,堆栈是有他的优点的,而且比较明显,我们的操作会便随大量的插入栈顶,移除栈顶很明显,Stack是最优雅的选择,不过在实际应用中,往往很多情况移除的并不是栈顶元素,也有考虑过用LinkedList,个人理解,若不对,欢迎留言。

采用堆栈管理的思路就是 创建一个堆栈管理类,使用单例管理,这点很重要

提供add和delete方法,在每个Activity的onCreat()方法调用添加,onDestroy方法调用删除以下给出常用代码

public class AppManager {
private static Stack<Activity> activityStack = new Stack<>();
private static AppManager instance;

private AppManager() {
}
//创建单例
public static AppManager getAppManager() {
if (instance == null) {
instance = new AppManager();
}
return instance;
}
public void addActivity(Activity activity) {
activityStack.add(activity);
}
public void removeActivity(Activity activity) {
if (activity != null) {
activityStack.remove(activity);
activity.finish();
activity = null;
}
}
//还有退出应用的方式
public void finishAllActivityAndExit(Context context) {
if (null != activityStack) {
for (int i = 0, size = activityStack.size(); i < size; i++) {
if (null != activityStack.get(i)) {
activityStack.get(i).finish();
}
}
activityStack.clear();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android