求助,android程序运行崩溃,然后不能全部退出!

zj193942 2013-05-21 02:27:49
我原先是在跳转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的。但是这里就发现了一个问题。
就是当我的程序运行出错而导致崩溃的时候,他会自动关闭现在这个程序,而去再打开一个新的程序(我猜测是这样,等待大神帮我解惑!),然后现在我点退出的话,就需要连续点很多次退出了。因为我每个页面都有一个退出按钮,这样的话,点击一个退出,他回到上个页面,并没玩完全退出整个程序。求大神帮助解决!
...全文
491 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
夜的低泣 2013-06-08
  • 打赏
  • 举报
回复
请问楼主,你怎么加的全局异常捕获,我重写了UncaughtExceptionHandler来进行异常捕获,但是好像没有用,请问你是怎么做的,可以把源码贴处理我看看吗?
u010891124 2013-05-30
  • 打赏
  • 举报
回复
引用 2 楼 cclovescw 的回复:
加一个全局的异常捕获,在崩溃的时候,把activitylist清空,做得更好点的话,把机型、时间、安卓版本、异常信息发送回服务器,分析分析
——这种做法,如果是做了代码混淆,全局异常捕获的输出日志也会受到影响吧,还能做分析用吗?
zj193942 2013-05-21
  • 打赏
  • 举报
回复
引用 5 楼 wlcw16 的回复:
[quote=引用 4 楼 zj193942 的回复:] [quote=引用 2 楼 cclovescw 的回复:] 加一个全局的异常捕获,在崩溃的时候,把activitylist清空,做得更好点的话,把机型、时间、安卓版本、异常信息发送回服务器,分析分析
谢谢,你说的我好好考虑考虑。 他这个有个问题是这样的,比如我开始在我的activity中跳转了100次,程序崩溃后,我就需要点击100次退出才能完全退出这个程序。而且有可能你上次退出程序时,并没玩完全退出,程序崩溃后,就会去后台将没有完全退出的线程重新启动,然后就会有可能不能完全退出?有没有这个可能性?[/quote] 最好把你的崩溃bug修改掉。上线产品有异常退出的都是重大事故。VeryHight的bug等级的。不管怎样,程序不能崩溃。 还有,在onCreate中add了必须要在onDestroy中给remove掉,否则每次打开activity,list都会增加一个实例,久而久之heap就满了。就会抛出OOM异常。[/quote] 谢谢了,解决了,每次跳转activity的时候我都finish跳转前的activity,然后再设置一个全局捕获异常来处理异常信息!
zj193942 2013-05-21
  • 打赏
  • 举报
回复
引用 5 楼 wlcw16 的回复:
[quote=引用 4 楼 zj193942 的回复:] [quote=引用 2 楼 cclovescw 的回复:] 加一个全局的异常捕获,在崩溃的时候,把activitylist清空,做得更好点的话,把机型、时间、安卓版本、异常信息发送回服务器,分析分析
谢谢,你说的我好好考虑考虑。 他这个有个问题是这样的,比如我开始在我的activity中跳转了100次,程序崩溃后,我就需要点击100次退出才能完全退出这个程序。而且有可能你上次退出程序时,并没玩完全退出,程序崩溃后,就会去后台将没有完全退出的线程重新启动,然后就会有可能不能完全退出?有没有这个可能性?[/quote] 最好把你的崩溃bug修改掉。上线产品有异常退出的都是重大事故。VeryHight的bug等级的。不管怎样,程序不能崩溃。 还有,在onCreate中add了必须要在onDestroy中给remove掉,否则每次打开activity,list都会增加一个实例,久而久之heap就满了。就会抛出OOM异常。[/quote] 大哥,他这个跳转activity,是不是就要清除掉跳转之前的activity?你说的这个onDestroy方法,不是垃圾回收器自动执行么?
zj193942 2013-05-21
  • 打赏
  • 举报
回复
引用 2 楼 cclovescw 的回复:
加一个全局的异常捕获,在崩溃的时候,把activitylist清空,做得更好点的话,把机型、时间、安卓版本、异常信息发送回服务器,分析分析
我刚才试了下这个,还是没有完全清除掉所有的activity。
wlcw16 2013-05-21
  • 打赏
  • 举报
回复
引用 4 楼 zj193942 的回复:
[quote=引用 2 楼 cclovescw 的回复:] 加一个全局的异常捕获,在崩溃的时候,把activitylist清空,做得更好点的话,把机型、时间、安卓版本、异常信息发送回服务器,分析分析
谢谢,你说的我好好考虑考虑。 他这个有个问题是这样的,比如我开始在我的activity中跳转了100次,程序崩溃后,我就需要点击100次退出才能完全退出这个程序。而且有可能你上次退出程序时,并没玩完全退出,程序崩溃后,就会去后台将没有完全退出的线程重新启动,然后就会有可能不能完全退出?有没有这个可能性?[/quote] 最好把你的崩溃bug修改掉。上线产品有异常退出的都是重大事故。VeryHight的bug等级的。不管怎样,程序不能崩溃。 还有,在onCreate中add了必须要在onDestroy中给remove掉,否则每次打开activity,list都会增加一个实例,久而久之heap就满了。就会抛出OOM异常。
zj193942 2013-05-21
  • 打赏
  • 举报
回复
引用 2 楼 cclovescw 的回复:
加一个全局的异常捕获,在崩溃的时候,把activitylist清空,做得更好点的话,把机型、时间、安卓版本、异常信息发送回服务器,分析分析
谢谢,你说的我好好考虑考虑。 他这个有个问题是这样的,比如我开始在我的activity中跳转了100次,程序崩溃后,我就需要点击100次退出才能完全退出这个程序。而且有可能你上次退出程序时,并没玩完全退出,程序崩溃后,就会去后台将没有完全退出的线程重新启动,然后就会有可能不能完全退出?有没有这个可能性?
zj193942 2013-05-21
  • 打赏
  • 举报
回复
引用 1 楼 wlcw16 的回复:
新的程序的activity对象和原来崩溃的程序的activity对象不一样。所以退出的时候exit()方法就没用了。 你的addActivity方法在哪里调用的? 还有,你的这个数据结构用的不对。最好用set或者map来管理activity。 否则当你多次启动一个activity的时候,会往list里面加入同一个对象,造成内存泄露。
addActivity 是在我的activity的onCreate方法中调用的
  • 打赏
  • 举报
回复
加一个全局的异常捕获,在崩溃的时候,把activitylist清空,做得更好点的话,把机型、时间、安卓版本、异常信息发送回服务器,分析分析
wlcw16 2013-05-21
  • 打赏
  • 举报
回复
新的程序的activity对象和原来崩溃的程序的activity对象不一样。所以退出的时候exit()方法就没用了。 你的addActivity方法在哪里调用的? 还有,你的这个数据结构用的不对。最好用set或者map来管理activity。 否则当你多次启动一个activity的时候,会往list里面加入同一个对象,造成内存泄露。

80,356

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧