码迷,mamicode.com
首页 > 其他好文 > 详细

activity的生命周期和启动模式

时间:2017-09-23 17:28:16      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:状态   恢复   内存不足   答案   一点   ati   bin   img   binder   

1.常见生命周期说明

技术分享

 

 技术分享

 

2.两个常见问题

技术分享

 

 问题一答案:本质上就是onstart和onstop方法是是否可见进行调用,而onresume和onpause是看是否为前台互动而调用。

问题二答案:先执行a的onpause然后到b的oncreate,onstart,onresume再到b的onstop。启动一个活动可以简单理解为启动activity的请求会由Instrumentation来处理,然后它通过Binder想AMS发送请求,AMS内部维护着一个ActivityStack并负责栈内的Activity的状态同步,AMS通过ActivityThread去同步Activity的状态从而完成生命周期方法的调用。

 

3.异常情况下的生命周期分析

技术分享

 

1)资源相关的系统配置发生改变导致Activity被杀死并重新创建

 2)资源内存不足导致优先级的Activity被杀死

Activity按照优先级从高到低进行分,如下:

技术分享

 

总结:

当activity在异常状态下被杀死的时候,其会自动调用onSaveInstanceState()用于保存数据,并把这些数据放在Bundle中,然后再次启动该活动的时候,该Bundle会发送到onCreate()和onRestoreInstanceState()中,所以我们可以在这两个方法中进行判断其是否在异常状态下被杀死,从而取出数据,两个方法都可以取出数据,但是有一点的不同,就是onRestoreInstanceState()方法一旦被调用,其Bundle一定会有值,但是onCreate()不一样,官方推荐,是使用前者进行恢复数据。

注意:只有在activity异常被杀死的情况下才会调用onSaveInstanceState()方法。

代码实例:

技术分享

 

activity的生命周期和启动模式

标签:状态   恢复   内存不足   答案   一点   ati   bin   img   binder   

原文地址:http://www.cnblogs.com/lpd1/p/7581460.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!