zoukankan      html  css  js  c++  java
  • 保存和恢复activity的状态数据自己实现

     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

  • 相关阅读:
    快排笔记C++
    security+redis+jwt 一个登陆注册查询的例子
    centeros 配置好环境虚拟机下载(java git mysql maven nginx Python redis nodejs tomcat )
    ZwQueryInformationProcess 反调试代码
    c++ 创建进程设置窗口标题模拟键盘鼠标例子
    求一个数二进制中包含多少个1
    憨批是我
    憨批是我
    问卷星实现自动填表刷问卷(问卷星分析post协议实现 安卓版)
    前端面试题 -- 综合
  • 原文地址:https://www.cnblogs.com/wangziqiang/p/3863608.html
Copyright © 2011-2022 走看看