您当前的位置: 首页 >  android

命运之手

暂无认证

  • 2浏览

    0关注

    747博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Android】【异常处理】Activity和进程发生异常时的自动恢复逻辑

命运之手 发布时间:2019-10-03 22:26:01 ,浏览量:2

安卓APP在某些情况下,Activity发生异常,进程崩溃后,系统会自动恢复一个新的进程,重新创建Application,然后恢复任务栈中的上个Activity

现通过以下情景来举例说明: Application => 启动SplashActivity => 启动A => 启动B => 启动C

现在我们在C的onCreate中加入代码,让其崩溃,然后观察系统行为 在这里插入图片描述 我们看到,C发生异常后,进程崩溃了,但是系统重新恢复了一个进程,并回到了B

当然,并不是任意时候,进程都会自动恢复,需要注意以下几点

只有在Handler和EventListener中启动的Activity,会在发生异常时重新恢复进程

如果在onCreate中直接启动其它Activity报错,进程将直接崩溃

进程恢复后,会重建Application,然后恢复任务栈中最近的一个Activity,引发异常的Activity不会被恢复

任务栈中的其它Activity不会被立刻恢复,直到按下返回键,返回到某个Activity时,才会被恢复

Activity在恢复时,会保留Intent中的值,所有生命周期方法会重新执行一遍,但是静态变量等可能会丢失 由于进程在恢复时,只重建了Application和最近的Activity,并且保留了Activity中的Intent,我们根据这个流程,就可以推断出哪些值可能丢失了,哪些值仍然和崩溃前是一样的

关注
打赏
1654938663
查看更多评论
立即登录/注册

微信扫码登录

0.0438s