当一个活动进入到了停止状态,是有可能被系统回收的。按下返回键的时候,活动被重新创建一次,但是里面的数据就没办法重现:
这时Activity中提供了一个onSaveInstanceState()回调方法,保证在活动被回收之前一定会被调用。
onSaveInstanceState()方法会携带一个Bundle类型的参数,Bundle提供了一系列的方法用于保存数据,如putString(),putInt()。
//活动被回收后数据的保存操作方法@Overrideprotected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); String tempData = "Something you just typed"; outState.putString("data_key",tempData);} 其实onCreate()方法也有一个Bundle类型的参数,一般情况下为null,但是如果活动被系统回收之前有onSaveInstanceState()方法,这个参数就会保存之前活动的数据内容
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(TAG,"onCreate"); setContentView(R.layout.activity_main); //活动被回收后,再次创建时数据的恢复 if (savedInstanceState!=null){ String tempData = savedInstanceState.getString("data_key"); Log.d(TAG,tempData); }}
原文地址:https://www.cnblogs.com/peifengyang/p/10572796.html
时间: 2024-10-05 05:50:04