Activity的生命周期
2016-08-05 15:36
127 查看
转载请注明出处:TuTu
看了上面的流程图之后,下面就为大家介绍一下它的调用流程。
启动Activity
退出Activity
Home键,程序进入后台
重新启动
休眠/恢复
屏幕旋转
未重写onConfigurationChanged()
重写onConfigurationChanged()
来电
打开来电界面
关闭来电界面
Activity跳转页面
A—B
A—B—A Back返回
当A跳转到B的时候A就进入了停止状态,这个时候由于系统内存不足就把A给回收了。当重新点击Back返回键时就不会执行onRestart方法了,而会执行onCreate方法,A就会被重新创建一次。
那当我们在A中输入的一些文字就消失了,对用户的体验也就不好。查看文档得知Activity中有一个onSaveInstanceState的回调方法,可以在被系统回收之前调用以保存输入时的临时数据。
可以看到有一个Bundle类型的参数,我们就可以调用它的方法来进行保存数据了。比如putString()、putInt(),第一个用来保存字符串的,第二个保存整数型数据。当然还有其他的方法,想要保存什么类型的数据就以此类推就行了。
putString方法中的第一个参数就是我们为它取的别名用来在取值的时候获取它保存的值的。
保存完了那怎么取出来呢?
可以看到onCreate方法中也是使用的Bundle类型的参数,那么取数据也就在这方法里咯。最好先判断下是否为空,如果没值的话会报错的。取值就把存数据时起的别名获取就能取到里面的值了。获取的类型也要一样,比如存值时使用的putString方法,那么取值也要用getString方法。
取出值就可以做恢复操作了,比如将输入的文字重新赋值。
看了上面的流程图之后,下面就为大家介绍一下它的调用流程。
启动Activity
1. onCreate 2. onStart 3. onResume
退出Activity
1. onPause 2. onStop 3. onDestroy
Home键,程序进入后台
1. onPause 2. onStop
重新启动
1. onRestart 2. onStart 3. onResume
休眠/恢复
1. onPause 2. onSaveInstanceState 3. onStop
1. onRestart 2. onStart 3. onResume
屏幕旋转
未重写onConfigurationChanged()
1. onCreate 2. onStart 3. onResume4. onPause
5. onSaveInstanceState
6. onStop
7. onDestroy
8. onCreate
9. onStart
10. onRestoreInstanceState
11. onResume
重写onConfigurationChanged()
1. onCreate 2. onStart 3. onResume4. onConfigurationChanged
来电
打开来电界面
1. onPause 2. onStop
关闭来电界面
1. onRestart 2. onStart 3. onResume
Activity跳转页面
A—B
1. onPause 2. onCreate 3. onStart 4. onResume 5. onStop
A—B—A Back返回
1. onPause 2. onRestart 3. onStart 4. onResume 5. onStop 6. onDestroy
当A跳转到B的时候A就进入了停止状态,这个时候由于系统内存不足就把A给回收了。当重新点击Back返回键时就不会执行onRestart方法了,而会执行onCreate方法,A就会被重新创建一次。
那当我们在A中输入的一些文字就消失了,对用户的体验也就不好。查看文档得知Activity中有一个onSaveInstanceState的回调方法,可以在被系统回收之前调用以保存输入时的临时数据。
@Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); String tempData = "Hello"; outState.putString("data", tempData); }
可以看到有一个Bundle类型的参数,我们就可以调用它的方法来进行保存数据了。比如putString()、putInt(),第一个用来保存字符串的,第二个保存整数型数据。当然还有其他的方法,想要保存什么类型的数据就以此类推就行了。
putString方法中的第一个参数就是我们为它取的别名用来在取值的时候获取它保存的值的。
保存完了那怎么取出来呢?
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState != null) { String tempData = savedInstanceState.getString("data"); } }
可以看到onCreate方法中也是使用的Bundle类型的参数,那么取数据也就在这方法里咯。最好先判断下是否为空,如果没值的话会报错的。取值就把存数据时起的别名获取就能取到里面的值了。获取的类型也要一样,比如存值时使用的putString方法,那么取值也要用getString方法。
取出值就可以做恢复操作了,比如将输入的文字重新赋值。
相关文章推荐
- mailto: HTML e-mail 链接
- Oracle数据类型隐式转换小析
- java反射拼接方法名动态执行方法实例
- 安卓app接入微信支付
- 【网络】网络基础知识总结(包括TCP/IP协议、ARP、UDP等)
- [SpringBoot]构建SpringBoot项目 By Eclipse
- HDU 2222 AC自动机 入门题
- Spacebuilder在Mono上运行修改备忘
- HDU 4731 找规律,打表
- discuz!X3分类信息调用-主题列表页调用分类信息字段
- mysql的外键
- C++内存池实现
- 从设备像素比到移动适配
- OrmLite的封装
- Android总结篇系列:Android广播机制
- POJ3308
- 超过一定行数的label强制在末尾加上一个...展开且可以点击成全文
- [leetcode] 110. Balanced Binary Tree
- xshell传输文件
- 数据挖掘的一些评价标准