标签:状态 恢复 内存不足 答案 一点 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()方法。
代码实例:
标签:状态 恢复 内存不足 答案 一点 ati bin img binder
原文地址:http://www.cnblogs.com/lpd1/p/7581460.html