持久化应用程序实例的状态

我们度知道,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方法不会被调用,其他方法还是会被调用的

 

posted on 2015-07-03 15:48  石头hah  阅读(254)  评论(0编辑  收藏  举报

导航