Android-实地保护
Android-现场保护

onCreate
现场保护
当一个活动进入到了停止的状态,是有可能被系统回收的,我们都学过Activity的生命周期
当活动处于onPause() ,onStop() ,onDestroy() 三种状态时程序可能会被Android系统回收掉,这时如果之前未进行保护操作把数据保存的话就会造成用户在程序当中的数据或者修改丢失。也就是这里要讲的”现场保护”,我们希望当下次在运行程序时,上一次的数据还能恢复。
因此需要解决这种问题,Android提供了onSaveInstanceState(BundloutState)方法会在程序被回收前进行调用,它可以在程序被onStop()直前被调用,但不能保证是否在onPause()之前。保存的数据会存在一个bundle对象中,这个对象可以在下次启动程序调用onCreate(Bundle)或onRestoreInstanceState(Bundle)时作为传递的参数,这也就是为什么我们每一个activity重写的onCreate方法都有这么一段:
1 protected void onCreate(Bundle savedInstanceState) 2 { 3 // TODO Auto-generated method stub 4 super.onCreate(savedInstanceState); 5 }
onSaveInstanceState(Bundle) 里面的这个Bundle对象和onCreate中的所指相同对象。
那到底什么时候会调用这个方法,其实并不是在activity被destroy就一定调用。有时候也需要根据用户设定,我的手机会在按返回键时kill掉,home键不会kill
onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
使用outState的put方法可以保存数据,每个保存方法需要传入两个参数,第一个是键,第二个是值
}
其实在安卓源码里给出了很详细的解释,这里我只是写了自己对现场保护的理解。