Android开发,完全退出APP的实现

本文介绍了一种确保APP能够被完全退出的方法。通过使用单例模式设计的AgentApplication类,可以实现遍历并关闭所有已开启的Activity,最终结束当前Activity,确保APP没有残留进程。

        这是每个APP开发中都会遇到的问题。要完全退出APP,需要结束所有的Activity。在网上看到的一个主要方法是用一个继承自Application的类存放所有打开的Activity,退出APP时,遍历所有Activity一一关闭。然而笔者实践发现,这种方法最后还会遗留某些Activity,原因可能是因为当前所在的Activity结束后中断了结束所有Activity过程的执行。

        解决方法很简单,退出APP时,先结束所有其它的Activity,最后结束当前所在的Activity。代码如下:

AgentApplication.java

import android.app.Activity;
import android.app.Application;

import java.util.ArrayList;
import java.util.List;


public class AgentApplication extends Application {

    private List<Activity> activities = new ArrayList<>();

    private static AgentApplication instance = null;

    private AgentApplication() {

    }

    public synchronized static AgentApplication getInstance() {
        if (instance == null) {
            instance = new AgentApplication();
        }
        return instance;
    }

    public void addActivity(Activity activity) {
        activities.add(activity);
    }

    @Override
    public void onTerminate() {
        super.onTerminate();

    }

    public void finishAllActivities(Activity activity) {
        for (Activity activity1 : activities) {
            if (activity1 != activity) {
                activity1.finish();
            }
        }
        activity.finish();
        System.exit(0);
    }

}

        使用单例模式设计AgentApplication类。退出APP时,调用其finishAllActivities(Activity activity)方法,参数是当前所在的Activity。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值