如何从一个Activity中关闭整个应用,主要有两种方法,
方法一:使用System.exit(0)来进行退出应用,但是,这个方法,可能会引起Android系统的异常退出,通常系统接收到异常退出之后都会重启应用,并弹出一个异常退出的对话框。这种方式的用户体验非常不好。
方法二:使用Application类来推出应用,这种方法的实质其实是在启动应用后,每启动一个Activity就将其放入一个Activity的数组,最终在结束应用时对数组中的Activity依次执行finish()函数结束Activity。
这种方法要编写一个类继承于Application类:
import android.app.Activity;
import android.app.Application;
import java.util.ArrayList;
import java.util.List;
/**
* Created by hp on 2018/3/1.
*/
public class App extends Application {
private static List<Activity> oList;//用于存放所有启动的Activity的集合
public void onCreate() {
super.onCreate();
oList = new ArrayList<Activity>();
}
/**
* 添加Activity
*/
public void addActivity_(Activity activity) {
// 判断当前集合中不存在该Activity
if (!oList.contains(activity)) {
oList.add(activity);//把当前Activity添加到集合中
}
}
/**
* 销毁单个Activity
*/
public void removeActivity_(Activity activity) {
//判断当前集合中存在该Activity
if (oList.contains(activity)) {
oList.remove(activity);//从集合中移除
activity.finish();//销毁当前Activity
}
}
/**
* 销毁所有的Activity
*/
public void removeALLActivity_() {
//通过循环,把集合中的所有Activity销毁
for (Activity activity : oList) {
activity.finish();
}
}
}
之后在每启动一个Activity时,使用函数addActivity_(Activity.this)将其添加到数组中。
在结束应用时:
app.removeALLActivity_();
注意:最后一定要在manifest.xml中的application标签中加一属性
android:name="你的Application子类的名字"
即可。