Android开发,关闭所有activity的方法

接触Android开发没多久,最近开发一个项目,在进行Activity的退出时遇到一些问题——偶尔当出现覆盖的Activity时,使用System.Exit(0),虽然结束当前进程,但是并没有退出程序,而且显示另外一个Activity。

如:Activity A为登录Activity,退出登录跳转到主Activity B,在Activity B中退出登录,跳转到Activity A,但是并没有结束Activity B,再从Activity A跳转到Activity B,这时使用System.Exit(0),并没有退出程序,而是返回最开始的那个Activity B,因为这时Activity覆盖了。

为解决这个问题尝试了很多的方法,最后解决了问题:使用Activity队列,可能很多的大能应该都知道,写在这里为方便记忆同时帮助和我一样的才接触的人。


首先新建一个工具类SysApplication.java

/** 
 * 工具类 用来结束所有后台activity 
 * @author Stanny 
 * 
 */ 
public class SysApplication extends Application {
	//运用list来保存们每一个activity是关键  
    private List<Activity> mList = new LinkedList<Activity>();  
    //为了实现每次使用该类时不创建新的对象而创建的静态对象  
    private static SysApplication instance;   
    //构造方法  
    private SysApplication(){}  
    //实例化一次  
    public synchronized static SysApplication getInstance(){   
        if (null == instance) {   
            instance = new SysApplication();   
        }   
        return instance;   
    }   
    // add Activity    
    public void addActivity(Activity activity) {   
        mList.add(activity);   
    }   
    //关闭每一个list内的activity  
    public void exit() {   
        try {   
            for (Activity activity:mList) {   
                if (activity != null)   
                    activity.finish();   
            }   
        } catch (Exception e) {   
            e.printStackTrace();   
        } finally {   
            System.exit(0);   
        }   
    }   
    //杀进程  
    public void onLowMemory() {   
        super.onLowMemory();       
        System.gc();   
    }  
}


这个类有两个方法:

addActivity(),用于添加Activity进入队列,每次新建一个Activity时,都在onCreate()方法中执行一次添加,将Activity添加进队列

protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.act_baby_info);
		SysApplication.getInstance().addActivity(this);
		// 初始化控件
		initview();
	}

exit(),就是用于结束进程的方法,在需要结束时调用就可关闭所有的Activity

SysApplication.getInstance().exit();


希望能帮助到和我一样的人。


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值