1. 重写onSaveInstanceState函数,在Activity destroy之前保存信息
2. onCreate(Bundle savedInstanceState)方法中的参数savedInstanceState就是之前保存的信息
问:在什么时候启动Activity savedInstanceState才不为null呢?
答:savedInstanceState是在恢复Activity 实例的时候用的。比如系统new 了一个Activity实例,但是由于屏幕旋转、内存不足等原因,系统kill掉了这个Activity。等到用户再次回到这个界面时,系统就需要恢复界面之前保存的内容。如果用户是按了返回键将Activity销毁了,也就是下次启动的实例是新创建的了,那么系统便不会恢复之前的Activity实例的内容了。也就是savedInstanceState参数为null了。
问:onSaveInstanceState函数保存的信息是存储在内存还是存储在硬盘呢?
答:存储在内存。这个时候系统还是期待着这个Activity的实例会恢复。因为是由于系统的原因将它kill掉的。比如旋转屏幕就会导致Activity实例的kill与重建,这时Activity的信息肯定是在内存的,总不能存到外存再取出来吧。
参考文献:
【1】https://developer.android.com/training/basics/activity-lifecycle/recreating?hl=zh-cn