Activity完全退出

程序有一个欢迎界面,有多个activity互相跳转,所以想要设置一个menu键之后又选择退出的项。
       尝试了很多的方法,Android的activity在创建之后,也就是调用了onCreate函数之后就进入了一个栈区,将创建了的activity按顺序放进去,finish()和System.exit(0)只能结束当前activity,而不能结束所有。而网上大量流传的所谓终极方法:
  1.                 Intent startMain new Intent(Intent.ACTION_MAIN);  
  2.                 startMain.addCategory(Intent.CATEGORY_HOME);  
  3.                 startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  4.                 startActivity(startMain);  
  5.                 System.exit(0);
       表面上退出了程序进入了手机的主页面,但是当你再次打开此程序的时候就会发现记录了上次使用时的上一个activity,也就是说并没有真正意义的关掉其他的活动。
       询问老师之后得知一个方法,就是在每个startActivity(intent);之前加上finish(this)来结束当前活动,这样子实现了menu功能。但是带来两个缺点:1、返回键直接退出 2、所有的activity每次跳转之后就关闭,也就是说再次创建时需要重新载入,慢而用户体验差。
       最后,用了一个这样子的方法。
       自己写了一个类,就是一个链表来存放所有创建了的activity。而在退出时将链表中的activity全部finish(),这样子就实现了完全退出功能,而且不影响返回键功能。代码如下:
package org.bei.aaa;

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

import android.app.Activity;
import android.app.Application;
import android.content.Context;

public class ExitApplication extends Application {

       private List<Activity> list = new ArrayList<Activity>();
 
       private static ExitApplication ea;

       private ExitApplication() {

       }

       public static ExitApplication getInstance() {
              if (null == ea) {
                     ea = new ExitApplication();
              }
              return ea;
       }

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

       public void exit(Context context) {
              for (Activity activity : list) {
                     activity.finish();
              }
              System.exit(0);
       }
}
然后在每个Activity的onCreate方法中调用 ExitApplication.getInstance().addActivity(this);,然后在处理退出请求中直接调用 ExitApplication.getInstance().exit(this);即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值