Android-SavedInstanceState使用
10 Aug 2018
一般学习Android开发的开发者很容易忽略使用SavedInstanceState。
对于特殊情况,例如崩溃、后台回收,
SavedInstanceState的价值才会得到体现。
本文章这对SavedInstanceState进行测试,并总结使用方法。
测试项目:
https://github.com/pulque/SavedInstanceState测试方式:
同通过打印Log来查看调用的方法。测试流程:
3个页面,打开1、2、3页面,改变2页面数据,在第3个页面制造崩溃。查看2页面信息是否保留。
可以点击Android Studio中Logcat里的结束进程按钮,结束APP。
测试结果:
进入页面会调用:MainActivity +++onCreateView+++ savedInstanceState=NULL MainFragment +++onCreateView+++ savedInstanceState=NULL MainFragment +++onActivityCreated+++ savedInstanceState=NOT NULL MainFragment +++onViewStateRestored+++ savedInstanceState=NOT NULL离开页面会调用:
MainFragment +++onSaveInstanceState+++ savedInstanceState=NOT NULL MainActivity +++onSaveInstanceState+++ savedInstanceState=NOT NULL崩溃后会调用:
MainActivity +++onCreateView+++ savedInstanceState=NOT NULL MainFragment +++onCreateView+++ savedInstanceState=NOT NULL MainFragment +++onActivityCreated+++ savedInstanceState=NOT NULL MainFragment +++onViewStateRestored+++ savedInstanceState=NOT NULL MainActivity +++onRestoreInstanceState+++ savedInstanceState=NOT NULL
总结:
Bundle中只能存储简单变量,避免影响界面显示。复杂数据存文件或数据库。
变量保存流程:
1.onSaveInstanceState保存数据
2.onCreateView读取数据,当savedInstanceState不为空时。