保存activity的state

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");}

相關文章
相關標籤/搜索