Android从一个Activity中关闭整个应用

如何从一个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子类的名字"

即可。



发布了26 篇原创文章 · 获赞 9 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/sad490/article/details/79428362