触发条件
任何活动被回收的场景
解决办法
活动中提供了一个onSaveInstanceState,这个方法会在活动被回收前调用,因此可以
通过此方法保存数据
onSaveInstanceState 需要传递一个Bundle类型的参数
Bundle提供了一些方法用于保存数据
常见的有putInt..PutString
保存的方式也很简单直接PutString("key",value);即可
@Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString("test","1"); }
恢复数据的方法
因为活动被回收了再次调用活动的时候可能不会触发onRestart 而是重新创建活动 onCreate
下面是在碎片里面做的操作所以没有
setContentView(R.layout.main_layout);
@Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(savedInstanceState!=null){ String data=savedInstanceState.getString("test"); } }
每次这样做感觉好麻烦啊无意间发现一个大神做的一个自动化保存的文章