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 }