如何保存Activity的状态或者说Activity重启怎么保存数据?

590 阅读2分钟

Activity的状态通常情况下系统会自动保存的,只有当我们需要保存额外的数据时才需要使用到这样的功能。

一般来说,调用onPause()和onStop()方法后的activity实例仍然存在于内存中,activity的所用信息和状态数据不会消失,当activity重新回到前台之后,所有的改变都会得到保留。

但是当系统内存不足时,调用onPause()和onStop()方法后的activity可能会被系统摧毁,此时内存中就不会存有该activity的实例对象了。如果之后这个activity重新回到前台,之前所作的改变就会消失。为了避免此情况的发生,我们可以覆写onSaveInstanceState()方法。onSaveInstanceState()方法接受一个Bundle类型的参 数,开发者可以将状态数据存储到这个Bundle对象中,这样即使activity被系统摧毁,当用户重新启动这个activity而调用它的onCreate()方法时,上述的Bundle对象会作为实参传递给oncreate()方法,开发者可以从bundle对象中取出保存的数据,然后利用这些数据将activity恢复到被摧毁之前的状态。

 需要注意的是,onSaveInstanceState()方法并不是一定会被调用的,因为有些场景是不需要保存状态数据的,比如用户在按下back键推出activity时,用户显然想要关闭这个activity,此时是没有必要保存数据以供下次恢复的,也就是onSaveInstanceState()方法是不会被调用的,如果调用onSaveInstanceState()方法,调用将发生在onPause()或onStop()方法之前。

api代码:

   @Override
      protected  void onSaveInstanceState(Bundle bundle){
         super.onSaveInstanceState(bundle);
      
      }