1、保存数据的方法:onSaveInstanceState(Bundle outState)
触发条件:Activity未执行finish,比如按了home键,电源键,旋转Activity,内存不足等。这种数据保存都是临时的。如果想保存一些持久数据,用onPause
2、恢复数据的方法:onRestoreInstanceState(BundlesavedInstanceState)
触发条件:onSaveInstanceState已经触发,Activity被系统回收之后,再次打开。
3、恢复数据的方法:Create(Bundle savedInstanceState)
触发条件:创建Activity实例的时候
4、接下来,Activity里面,实践一下:
@Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString("test","test数据"); Log.e("存储临时数据:","test数据"); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); String test = savedInstanceState.getString("test"); Log.e("恢复临时数据:",test); }按HOME键,触发onSaveInstanceState,程序回到后台,等系统把Activity回收,再次打开,触发onRestoreInstanceState。
注意:如果想快速让系统回收Activity,打开手机设置,开发人员选项,开启不保留活动。
这样,用户按了Home键,系统就会回收Activity了。
5、同理Fragment里面
@Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } @Override public void onViewStateRestored(@Nullable Bundle savedInstanceState) { super.onViewStateRestored(savedInstanceState); }只是恢复数据的方法名变了。
再说一遍,只适合保存临时数据,不能存持续化数据,否则数据可能会丢失,被系统回收。