最近发现一个问题,就是有时候程序崩溃没有退出而是重启了mainactivity,这样反而会造成一些问题或者定位问题,问题就是就是在mainactivity下跳转到ActivityB的时候不调用mainactivity的finish,然后当ActivityB出现错误崩溃的的时候,mainactivity就会再次调用 onCreate,但是如果在ActivityB中正常调用finish退出的时候就不会出现这种情况,想请教一下这个问题如何解决
主要是定位问题,由于第一个异常崩溃引起后续一系列的异常本身就是程序不稳定的表现,需要做一些异常处理
如果只是单纯找出崩溃问题,首先是清除日志,然后触发崩溃,然后向上查找日志,看异常信息
Android在API21以下(也就是Android5.0以下),crash后会直接退出应用;但是在API21以上(5.0以上系统),会遵循以下原则重启:
1. 包含service, 如果程序crash的时候,运行着service,那么系统会重新启动service 。
2. 不包含service,只有一个Activity,那么系统不会重新启动该Activity 。
3. 不包含service,但是当前栈中包含两个Activity, A–>B, 如果B crash,那么系统会重启A。
4. 不包含service,但是当前栈中包含三个Activity, A–>B–>C, 如果C crash,那么系统会重启B,并且A仍然存在,即可以从重启的Back到A。
使用Thread.UncaughtExceptionHandler捕获崩溃异常,在崩溃时使用System.exit(-1);方法退出程序,还可以使用
android.os.Process.killProcess(android.os.Process.myPid()); 杀掉本app进程