持久化应用程序实例的状态
我们度知道,android应用程序的生命周期不是由它自己控制的,当资源匮乏的时候,android为了保障用户体验,就会释放那些进程优先级比较低的应用程序。
此时保存应用程序的实例状态,就变得极其重要
activity生命周期中有一个onSaveInstanceState方法,此方法是在onResume执行之后,onPause执行之前执行的。也就是说此方法总是会运行的。
在此方法中保存实例的状态再好不过了。
有2中保存实例的方法:
1、使用sharedPreference,可以创建只针对当前activity的sp
使用Activity.getPreference()
2、还有一种就是使用onSaveInstanceState的参数Bundle进行存储
要注意的一点是:当我们手动关闭activity(按返回键)或者代码中调用finish的时候,在activity重新创建的时候onCreate(Bundle)的bundle参数是空的,只有在
系统销毁了我们的activity后,在启动才会包含此参数
=========================================================================
上面讲的是activity的实例状态持久化,随着3.0后fragment的推出。fragment用的越来越多了
那么如果在activity销毁之后,保留fragment的实例状态,来提高应用程序的性能呢
可以在fragment的oncreate方法中调用setRetainInstance方法。当activity销毁之后,fragment的实例不会销毁。当activity在重新启动的时候,由于fragment的
实例还存在,所以只需要在onCreateView的时候更新ui的信息。
注明:activity的销毁重启,对于fragment而言onCreate、onDestroy方法不会被调用,其他方法还是会被调用的