activity狀態的保存和恢復 一、簡介 1、保存activity狀態 * 保存activity狀態,onSaveInstanceState這個方法會自動保存有ID的組件的狀態 * 沒有ID的組件或者變數的狀態的保存就需要我們重寫這個方法* 這個方法是在activity被回收或者被銷毀的時候保存的 ...
activity狀態的保存和恢復
一、簡介
1、保存activity狀態
* 保存activity狀態,onSaveInstanceState這個方法會自動保存有ID的組件的狀態
* 沒有ID的組件或者變數的狀態的保存就需要我們重寫這個方法
* 這個方法是在activity被回收或者被銷毀的時候保存的,比如橫豎屏幕的切換等等
2、恢復activity狀態
* 恢復activity狀態
* onRestoreInstanceState方法會自動恢復有ID的或者說之前onSaveInstanceState保存的狀態
* 我們自己重寫的保存內容要我們自己恢復
* 這個方法在頁面創建的時候自動運行
* 所以自然也可以把恢復狀態的代碼寫在onCreate方法裡面
二、代碼實例
activity.MainActivity
1 package activity; 2 3 4 5 6 import com.example.activityStatus.R; 7 8 import android.app.Activity; 9 import android.content.Intent; 10 import android.os.Bundle; 11 import android.util.Log; 12 import android.view.View; 13 import android.view.View.OnClickListener; 14 import android.widget.Button; 15 import android.widget.Toast; 16 17 18 19 public class MainActivity extends Activity{ 20 private String str="我是狀態信息"; 21 private Button btn_openActivty;//創建一個button對象 22 protected void onCreate(Bundle savedInstanceState) { 23 super.onCreate(savedInstanceState);//父類操作 24 setContentView(R.layout.activity_main);//引入名為activity_main的界面 25 btn_openActivty=(Button) findViewById(R.id.btn_openActivity);//找id為btn_openActivity的button 26 btn_openActivty.setOnClickListener(new OnClickListener() {//設置button點擊監聽 27 28 @Override 29 public void onClick(View v) {//onclick事件 30 // TODO Auto-generated method stub 31 Intent intent=new Intent();//初始化intent 32 intent.setClass(MainActivity.this,Activity01.class);//連接 33 startActivity(intent);//打開activity 34 } 35 }); 36 } 37 38 //保存activity狀態,onSaveInstanceState這個方法會自動保存有ID的組件的狀態 39 /* 40 * 保存activity狀態,onSaveInstanceState這個方法會自動保存有ID的組件的狀態 41 * 沒有ID的組件或者變數的狀態的保存就需要我們重寫這個方法 42 * 這個方法是在activity被回收或者被銷毀的時候保存的,比如橫豎屏幕的切換等等 43 * (non-Javadoc) 44 * @see android.app.Activity#onSaveInstanceState(android.os.Bundle) 45 */ 46 @Override 47 protected void onSaveInstanceState(Bundle outState) { 48 // TODO Auto-generated method stub 49 outState.putString("str", str); 50 super.onSaveInstanceState(outState); 51 Toast.makeText(this, "onSaveInstanceState", Toast.LENGTH_SHORT).show(); 52 Log.d("MainActivity", "onSaveInstanceState"); 53 } 54 55 /* 56 * 恢復activity狀態 57 * onRestoreInstanceState方法會自動恢復有ID的或者說之前onSaveInstanceState保存的狀態 58 * 我們自己重寫的保存內容要我們自己恢復 59 * 這個方法在頁面創建的時候自動運行 60 * 所以自然也可以把恢復狀態的代碼寫在onCreate方法裡面 61 * 62 * (non-Javadoc) 63 * @see android.app.Activity#onRestoreInstanceState(android.os.Bundle) 64 */ 65 @Override 66 protected void onRestoreInstanceState(Bundle savedInstanceState) { 67 // TODO Auto-generated method stub 68 super.onRestoreInstanceState(savedInstanceState); 69 if(savedInstanceState==null) return; 70 String str=savedInstanceState.getString("str"); 71 Toast.makeText(this, str, Toast.LENGTH_SHORT).show(); 72 Log.d("MainActivity", str); 73 } 74 }