• Android 数据存储之 SharedPreferences


    SharedPreferences

      SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。
      其存储位置在/data/data/<包名>/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。
      实现SharedPreferences存储的步骤如下:

     一、根据Context获取SharedPreferences对象

     二、利用edit()方法获取Editor对象。

     三、通过Editor对象存储key-value键值对数据。

     四、通过commit()方法提交数据。

      五、 SharedPreference四种操作模式:
                  Context.MODE_PRIVATE:新内容覆盖原内容
                  Context.MODE_APPEND:新内容追加到原内容后
                  Context.MODE_WORLD_READABLE:允许其他应用程序读取
                  Context.MODE_WORLD_WRITEABLE:允许其他应用程序写入,会覆盖原数据。
                  
                  
    具体实现代码如下:

    publicclass MainActivity extends Activity {
        @Override
        publicvoid onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
           
        //获取SharedPreferences对象
           Context ctx = MainActivity.this;       
           SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(ctx);
           //或者指定name
           //SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE);
        //存入数据
           Editor editor = sp.edit();
           editor.putString("STRING_KEY", "string");
           editor.putInt("INT_KEY", 0);
           editor.putBoolean("BOOLEAN_KEY", true);
           editor.commit();
           
        //返回STRING_KEY的值
           Log.d("SP", sp.getString("STRING_KEY", "none"));
        //如果NOT_EXIST不存在,则返回值为"none"
           Log.d("SP", sp.getString("NOT_EXIST", "none"));
        }
    }

      这段代码执行过后,即在/data/data/com.test/shared_prefs目录下生成了一个SP.xml文件,一个应用可以创建多个这样的xml文件:

    <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
    <map>
     <string name="STRING_KEY">string</string>
     <int name="INT_KEY" value="0"/>
     <boolean name="BOOLEAN_KEY" value="true"/>
    </map>


     在程序代码中,通过getXXX方法,可以方便的获得对应Key的Value值,如果key值错误或者此key无对应value值,
     SharedPreferences提供了一个赋予默认值的机会,以此保证程序的健壮性。如下图运行结果中因为并无值为"NOT_EXIST"的Key,所以Log打印出的是其默认值:“none”。
     在访问一个不存在key值这个过程中,并无任何异常抛出。
      SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。
      但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。
      所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。
     
     
     

  • 相关阅读:
    遗传算法(Genetic Algorithm, GA)及MATLAB实现
    CCF CSP 201809-2 买菜
    PAT (Basic Level) Practice (中文)1008 数组元素循环右移问题 (20 分)
    PAT (Basic Level) Practice (中文)1006 换个格式输出整数 (15 分)
    PAT (Basic Level) Practice (中文)1004 成绩排名 (20 分)
    PAT (Basic Level) Practice (中文)1002 写出这个数 (20 分)
    PAT (Advanced Level) Practice 1001 A+B Format (20 分)
    BP神经网络(原理及MATLAB实现)
    问题 1676: 算法2-8~2-11:链表的基本操作
    问题 1744: 畅通工程 (并查集)
  • 原文地址:https://www.cnblogs.com/rfheh/p/4164776.html
Copyright © 2020-2023  润新知