1.正常结束activity(back键和finish())下的保存数据:
onPause():用于保存数据操做, 缘由:onPause()和onResume()是在activity中一定会执行的。 onStop()不必定会执行。指针
2.系统由于内存不足,致使回收(即销毁)activity或者屏幕旋转时下的保存数据:
onSaveInstanceState():用于保存数据。 保存的数据能够是edittext中输入的数据,listview中item滑动到的指定位置。内存
oncreate():用于获取保存的数据。可是必须判断参数是否为零,否则可能会报空指针异常get
onRestoreInstanceState(): 用于获取保存的数据,能够不用判断参数是否为零。it
注意点:屏幕旋转是,系统会销毁当前的activity,而后在从新建立一个新的activity(即从新启动被销毁的activity)。io
//(前提:因内存不足,致使系统回收不在栈顶的activity. 即,当用户正常的使用back键结束和finish结束时,不会使用方法)
//非正常销毁activity前提下,当前activity开始stop时,系统会调用该方法保存activity的状态
//一般用于保存edittext中输入的内容,或者listview中选中position
protected void onSaveInstanceState(Bundle outState) {
outState.putString("onSaveIntanceState", s);
outState.putInt("position",1);
super.onSaveInstanceState(outState);
Log.i("MainActivity", "onSaveInstanceState");
}方法
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);layout
edittext=(EditText) findViewById(R.id.editText1);
tv=(TextView) findViewById(R.id.textView1);数据
if(savedInstanceState!=null){
save1=savedInstanceState.getString("onSaveIntentState");
int i=savedInstanceState.getInt("position");
edittext.setText(save1);
tv.setText(i);
}
Log.i("MainActivity", "onCreate"+savedInstanceState);
s=edittext.getText().toString();
listview
}异常
//当前activity开始onstart()方法后,系统会调用该方法,用于恢复上一次的状态。 //与oncreate()方法相比较,不须要判断参数savaeInstanceState是否为null protected void onRestoreInstanceState(Bundle savedInstanceState) { String s=savedInstanceState.getString("onSaveIntentState"); int i=savedInstanceState.getInt("position"); super.onRestoreInstanceState(savedInstanceState); Log.i("MainActivity", "onRestoreInstanceState");}