我原先是在跳转activity的时候将activity加入基类的activity集合中,退出时,去清除List中的所有的activity。
public class MyApplication extends Application{ 
    private static MyApplication instance;     private List<Activity> activitylist=new LinkedList<Activity>();     public static MyApplication getInstance(){ 
        if(null==instance){ 
             instance = new MyApplication(); 
        } 
        return instance; 
    }     public void addActivity(Activity activity){ 
        activitylist.add(activity); 
    }     public void exit(){ 
        for(Activity ac:activitylist){ 
            ac.finish(); 
        } 
        System.exit(0); 
    } 

开始时这样去退出所有activity的。但是这里就发现了一个问题。
    就是当我的程序运行出错而导致崩溃的时候,他会自动关闭现在这个程序,而去再打开一个新的程序(我猜测是这样,等待大神帮我解惑!),然后现在我点退出的话,就需要连续点很多次退出了。因为我每个页面都有一个退出按钮,这样的话,点击一个退出,他回到上个页面,并没玩完全退出整个程序。求大神帮助解决!Android

解决方案 »

  1.   

    新的程序的activity对象和原来崩溃的程序的activity对象不一样。所以退出的时候exit()方法就没用了。
    你的addActivity方法在哪里调用的?
    还有,你的这个数据结构用的不对。最好用set或者map来管理activity。
    否则当你多次启动一个activity的时候,会往list里面加入同一个对象,造成内存泄露。
      

  2.   

    加一个全局的异常捕获,在崩溃的时候,把activitylist清空,做得更好点的话,把机型、时间、安卓版本、异常信息发送回服务器,分析分析
      

  3.   

    addActivity 是在我的activity的onCreate方法中调用的
      

  4.   

    谢谢,你说的我好好考虑考虑。
    他这个有个问题是这样的,比如我开始在我的activity中跳转了100次,程序崩溃后,我就需要点击100次退出才能完全退出这个程序。而且有可能你上次退出程序时,并没玩完全退出,程序崩溃后,就会去后台将没有完全退出的线程重新启动,然后就会有可能不能完全退出?有没有这个可能性?
      

  5.   

    谢谢,你说的我好好考虑考虑。
    他这个有个问题是这样的,比如我开始在我的activity中跳转了100次,程序崩溃后,我就需要点击100次退出才能完全退出这个程序。而且有可能你上次退出程序时,并没玩完全退出,程序崩溃后,就会去后台将没有完全退出的线程重新启动,然后就会有可能不能完全退出?有没有这个可能性?最好把你的崩溃bug修改掉。上线产品有异常退出的都是重大事故。VeryHight的bug等级的。不管怎样,程序不能崩溃。还有,在onCreate中add了必须要在onDestroy中给remove掉,否则每次打开activity,list都会增加一个实例,久而久之heap就满了。就会抛出OOM异常。
      

  6.   

    我刚才试了下这个,还是没有完全清除掉所有的activity。
      

  7.   

    谢谢,你说的我好好考虑考虑。
    他这个有个问题是这样的,比如我开始在我的activity中跳转了100次,程序崩溃后,我就需要点击100次退出才能完全退出这个程序。而且有可能你上次退出程序时,并没玩完全退出,程序崩溃后,就会去后台将没有完全退出的线程重新启动,然后就会有可能不能完全退出?有没有这个可能性?最好把你的崩溃bug修改掉。上线产品有异常退出的都是重大事故。VeryHight的bug等级的。不管怎样,程序不能崩溃。还有,在onCreate中add了必须要在onDestroy中给remove掉,否则每次打开activity,list都会增加一个实例,久而久之heap就满了。就会抛出OOM异常。
    大哥,他这个跳转activity,是不是就要清除掉跳转之前的activity?你说的这个onDestroy方法,不是垃圾回收器自动执行么?
      

  8.   

    谢谢,你说的我好好考虑考虑。
    他这个有个问题是这样的,比如我开始在我的activity中跳转了100次,程序崩溃后,我就需要点击100次退出才能完全退出这个程序。而且有可能你上次退出程序时,并没玩完全退出,程序崩溃后,就会去后台将没有完全退出的线程重新启动,然后就会有可能不能完全退出?有没有这个可能性?最好把你的崩溃bug修改掉。上线产品有异常退出的都是重大事故。VeryHight的bug等级的。不管怎样,程序不能崩溃。还有,在onCreate中add了必须要在onDestroy中给remove掉,否则每次打开activity,list都会增加一个实例,久而久之heap就满了。就会抛出OOM异常。
    谢谢了,解决了,每次跳转activity的时候我都finish跳转前的activity,然后再设置一个全局捕获异常来处理异常信息!
      

  9.   

    请问楼主,你怎么加的全局异常捕获,我重写了UncaughtExceptionHandler来进行异常捕获,但是好像没有用,请问你是怎么做的,可以把源码贴处理我看看吗?