activity在什么情况下被销毁?
用户按回退键
调用finish
放在回退栈中太久
横竖屏切换
前面两种情况下
系统会认为用户不再需要这个activity了,所以在销毁时不会做任何事
没有任何浏览方法能倒回去,只能再次启动该app
在第三、四种情况下
用户可以通过回退键或其他方式浏览回去
系统会用bundle保存activity的布局状态包括view状态
然后销毁activity,并在重建activity时恢复以前的状态,无需编程
但是注意,系统销毁前不一定能保存所有用户希望保存的数据
系统提供onSaveInstanceState()方法给用户保存额外的数据
提供onRestoreInstanceState()方法用于重建时恢复
但是上述方法仅仅保存少量键值对数据,无法保留大量数据
系统提供onRetainNonConfigurationInstance()用于保留大量的数据
提供getLastNonConfigurationInstance()用户恢复数据
注意这个方法不能传递和context有关的东西,比如view、adapter等等,否则会泄露内存
只能保存自定义的MyDataObject
注意这个方法已经 deprecated in API level 13. 官网推荐了下述fragment的方法
activity上面有fragment的情