1 public class DemoActivity extends BaseActivity { 2 private CheckBox cb_gender; 3 private String temp; 4 private Button bt_changeor; 5 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.a_demo); 10 // 如果savedInstanceState为空,则没有调用onSaveInstanceState方法 11 if (savedInstanceState == null) { 12 UtilsLog.i(TAG, "onCreate : savedInstanceState == null"); 13 } 14 // 如果savedInstanceState不为空,则用户调用onSaveInstanceState方法,并给Bundle赋值了。 15 else { 16 temp = savedInstanceState.getString("temp"); 17 UtilsLog.i(TAG, "onCreate : savedInstanceState != null && temp = " + temp); 18 } 19 initView(); 20 } 21 22 private void initView() { 23 bt_changeor = (Button) findViewById(R.id.bt_changeor); 24 cb_gender = (CheckBox) findViewById(R.id.cb_gender); 25 // 26 bt_changeor.setOnClickListener(new OnClickListener() { 27 28 @Override 29 public void onClick(View v) { 30 if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) { 31 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 32 } else if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) { 33 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 34 } 35 } 36 }); 37 cb_gender.setHint("选择"); 38 cb_gender.setChecked(true); 39 } 40 41 @Override 42 protected void onStart() { 43 super.onStart(); 44 } 45 46 @Override 47 protected void onRestoreInstanceState(Bundle savedInstanceState) { 48 super.onRestoreInstanceState(savedInstanceState);// onStart调用了此方法 49 UtilsLog.i(TAG, "onRestoreInstanceState 恢复状态数据 && temp = " + savedInstanceState.getString("temp")); 50 } 51 52 @Override 53 protected void onResume() { 54 super.onResume(); 55 } 56 57 // 适合保存UI的状态(Edittext输入的数据,checkbox的选中状态)、成员变量的值。 58 @Override 59 protected void onSaveInstanceState(Bundle outState) { 60 super.onSaveInstanceState(outState); 61 /** 62 * onSaveInstanceState()方法并不是一定会被调用的, 因为有些场景是不需要保存状态数据的. 63 * 比如用户按下BACK键退出activity时, 用户显然想要关闭这个activity, 此时是没有必要保存数据以供下次恢复的 64 */ 65 UtilsLog.i(TAG, "onSaveInstanceState 保存数据");// 调用顺序 onPasuse -> onSaveInstanceState -> onStop 66 /** 67 * 当activity再次启动时,这个Bundle会传递给onCreate()方法和随着onStart() 68 * 方法调用的onRestoreInstanceState(),<br> 69 * 所以它们两个都可以恢复捕获的状态。 70 */ 71 outState.putString("temp", "状态数据"); 72 } 73 74 @Override 75 protected void onPause() { 76 super.onPause(); 77 /** 78 * onPause()是三个中的第一个,它也是唯一一个在进程被杀死之前必然会调用的方法──onStop() 和 onDestroy() 79 * 有可能不被执行。<br> 80 * 因此应该用 onPause() 来将所有持久性数据(比如用户的编辑结果)写入存储之中。 81 */ 82 } 83 84 @Override 85 protected void onStop() { 86 super.onStop(); 87 } 88 89 @Override 90 protected void onDestroy() { 91 super.onDestroy(); 92 } 93 94 }
进入MainsplashActivity界面
进入DemoActivity界面
切换activity的屏幕方向
点击返回,到MainSplashActivity