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的状态

                                                           

  • 相关阅读:
    Selenium断言的使用,等待
    Selenium的鼠标事件,键盘事件
    json,HTTP协议
    HTML,js的基础知识
    Selenium3详解:元素定位方法
    Python操纵Excel,数据库
    Spring拦截器(权限的管理)
    完成登陆功能
    配置使用sitemesh
    Hibernate+pager-taglib实现分页功能
  • 原文地址:https://www.cnblogs.com/vicma/p/3559410.html
Copyright © 2011-2022 走看看