您的位置:首页 > 移动开发 > Android开发

学习笔记1: Activity 生命周期

2015-12-26 15:12 309 查看
主要分为 正常型 和 异常型

1.正常型生命周期

7个生命周期,话不多说:
onCreate() -- 生命周期的第一个方法,主要是 setContentView 加载界面资源 和 初始化一些数据
onStart() -- Activity这时已经可见,但是在后台,无法与用户交互 (如果有2个Activity,在上面的为前台,在下面的为后台。如果前台是透明属性,则下面的Activity就有可不可见之分了)
onResume() -- Activity 这时已经可见,并且在前台开始活动
onPause() -- Activity停止。1.正常情况下,onStop会接着执行。 2.特殊情况下,会再执行onRessume。 这个方法一般做一些存储数据,停止动画等工作,但是不能太耗时。因为系统在调用新Activity里的onResume前会先执行旧Activity里的onPause方法
onStop() -- 做一些稍微重量级的回收工作,不能太耗时 (打开一个新的Activity时,一般会执行 onPause --> onStop。但是如果新的Activity是透明主题,则不会调用onStop)
onDestory() -- 最后一个回调,做一些回收工作和最终的资源释放
onRestart() -- 当Activity从不可见 --> 可见时,会触发这个方法。(比如用户按了home键或者从别的Activity跳回到此界面)

上个图:



问题1:onStart,onResume,onPause,onStop的不同?
答:onStart 和 onStop 是根据Activity 是不是可见去调用。 onResume 和 onPause 是根据Activity 是不是在前台去调用

问题2:Activity A 跳到 Activity B,A.onPause() 和 B.onResume() 的执行顺序?
答: 先执行A.onPause() 再执行 B.onResume() 

2.异常型生命周期

a.系统配置变动时(如坚屏切横屏)

可以看看这篇文章: Activity 的生命周期 以及横屏竖屏切换时 Activity 的状态变化

总结:

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。(执行这个方法,必须设置sdk version 大于等于13.0)


b.内存不足被杀死时

先杀优先级低的。(前台正在交互的 >
可见但非前台(比如弹出一个对话框,但是后面的界面还是看得到) > 后台的 )

在此过程中,会调用onSaveInstanceState() 和 onRestoreInstanceState()。
我们可以通过bundle来保存和使用值

传对象: 
Bundle bundle = new Bundle();

bundle.putSerializable("user", user);

传值

Bundle bundle = new Bundle();

bundle.putString("sex" , "女汉子");

bundle.putDouble("height" , 180.12);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android