很多人会问 Activity-->onCreate方法的参数Bundler为什么总是空呢?
好,那么我们开始查看API文档,解释为 If the activity is being re-initialized after previously being shut down then this Bundle contains the data it most recently supplied in onSaveInstanceState(Bundle)
. Note: Otherwise it is null.
就是,如果当前activity 是被上次关闭后重新初始化,那么这个bundler对象包含了最近在onSaveInstanceState(Bundle)提供的数据。否则,它会是空的。
也就是说方法onSaveInstanceState(Bundle)调用后,就会将bundler对象赋值,然后调用oncreate的时候用的就是onSaveInstanceState(Bundle)方法中的bundler, 所以它就不会是空了。
那又有另一个问题了,onSaveInstanceState(Bundle)方法是由系统回调的,系统什么时间会回调这个方法呢?
好,现在来回答这个问题,这个方法是系统在需要异常关闭activity时(如内存剩余较少,需要关闭activiy释放内存 或者点击Home键直接退到launcher时也会调用),提供保存当前activity数据的方法。
API文档上说,下面两种情况不会调用此方法,假设我们由Activity A 启动 Activity B,
1、A界面不可见,处于onStop的状态,但是不会调用onSaveInstanceState(Bundle),因为A虽然不可见了,但是A没有被异常关闭,A是完好无缺的。
2、如果这时我们点击返回键,那么将会关闭B界面,这时仍然不会调用onSaveInstanceState(Bundle),因为这个B的实例将不会被系统保存,所以系统没有必要回调此方法。