zoukankan      html  css  js  c++  java
  • Activity状态保存的两种方式

      在Activity中常常会用到状态保存,比如正在编辑文本突然进来一通电话,这时当前的Activity就会被覆盖,若不进行状态保存则等到接完电话后,会发现编辑内容已经消失。

      在Android中状态保存通常有两种方式:

      1. 第一种是使用savedInstanceState。savedInstanceState是一个Bundle对象,类似HashMap以键值对的形式存在。通常用于保存当Activity被另一Activity遮挡或是覆盖时使用。

      2. 第二种是试用SharedPreference来保存。众所周知,SharedPreference是以xml格式存储数据。通常在当用户按下back或是home键。在Activity生命周期onPause()时使用SharedPreference记录当前状态,而在onResume()时,恢复其状态。

      下面就来举两个例子吧。

    1. 使用savedInstanceState保存Activity状态

    public class TestActivity extends Activity {

    private EditText edit = null;

    private final String key = "key";

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    edit = (EditText) super.findViewById(R.id.edit);

        if(edit != null && savedInstanceState != null){
          edit.setText(savedInstanceState.getString(key)); //读取保存状态
        }

     }

       

      @Override

          protected void onRestoreInstanceState(Bundle savedInstanceState) {

    edit.setText(savedInstanceState.getString("word"));//保存状态
    super.onRestoreInstanceState(savedInstanceState);
    }

     2. 使用SharedPreference保存状态

      

    public class TestActivity extends Activity {

      private EditText edit = null;

      private final String key = "key";

      @Override

      protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        edit = (EditText) super.findViewById(R.id.edit);

        if(edit != null && savedInstanceState != null){
          edit.setText(savedInstanceState.getString(key)); //读取保存状态
        }

     }

       

      

      @Override
      protected void onPause() {
        super.onPause();
        this.getPreferences(MODE_PRIVATE).edit().putString("word", edit.getText().toString()).commit();
      }

      @Override
      protected void onResume() {
        super.onResume();
        edit.setText(this.getPreferences(MODE_PRIVATE).getString("word", ""));
      }

    效果图:

     输入数据                           切换横屏后保存了Activity的状态

                                                           

  • 相关阅读:
    idea配置svn
    idea历史版本下载
    IntelliJ IDEA 2017.1.4 x64配置说明
    IDEA 初始配置教程
    【phonegap】用本地浏览器打开网页
    【phonegap】IOS按HOME键,程序进入suspended状态,再调出,界面出现文字丢失问题
    iOS按home键后程序的状态变化
    [phonegap]安装升级
    highcharts图表显示鼠标选择的Y轴提示线
    HTML5的local storage
  • 原文地址:https://www.cnblogs.com/vicma/p/3559410.html
Copyright © 2011-2022 走看看