zoukankan      html  css  js  c++  java
  • Android 数据存储之 SharedPreferences储存

    ------------------------------------------SharedPreferences存储--------------------------------------------

    SharedPreferences 使用键值对方式来存储数据的。当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出。

    SharedPreferences 支持多种不同数据类型的存储,可以按照需要取出数值型,或者字符型的数据。

    -----------------------------------------获取SharedPreferences对象-----------------------------------------

    要想使用 SharedPreferences 来存储数据,首先要获取到 SharedPreferences 对象。Android 主要提供了三种方法来得到 SharedPreferences 对象。

    1. Context 类中的 getSharedPreferences() 方法

      此方法接受两个参数,第一个参数用于指定 SharedPreferences 文件的名称,如果指定的文件不存在则会创建一个。

      SharedPreferences 文件都是存放在 /data/data/<包名>/shared_prefs/ 目录下的。

      第二个参数用于指定操作模式,主要为 MODE_PRIVATE(默认操作模式) 和 MODE_MULTI_PROCESS(多进程读写) 。

    2. Activity 类中的 getPreferences() 方法

      这个方法和 Context 中的 getSharedPreferences() 方法类似,不过它只接收一个操作模式参数,使用这个方法时会自动将当前活动的类名作为 SharedPreferences 的文件名。

    3. PreferenceManager 类中的 getDefaultSharedPreferences() 方法

      这是一个静态方法,它接收一个 Context 参数,并自动使用当前应用程序的包名作为前缀来命名 SharedPreferences 文件。

      得到了 SharedPreferences 对象之后,就可以开始向 SharedPreferences 文件中储存数据了。

    ---------------------------------------将数据存储到SharePreferences中--------------------------------------

    使用 SharedPreferences 对象储存数据:

      1. 调用 SharedPreferences 对象的 edit() 方法来获取一个 SharePreferences.Editor 对象。

      2. 向 SharedPreferences.Editor 对象中添加数据,如果添加一个字符串则使用 putString() 方法,以此类推。

      3. 调用 commit() 方法将添加的数据提交,从而完成数据存储操作。

    将数据存储到 SharedPreferences 文件中:

                public void onClick(View v) {
                    //获取 SharedPreferences 对象
                    SharedPreferences shared = getSharedPreferences("data", MODE_PRIVATE);
                    //获取  SharedPreferences.Editor 对象
                    SharedPreferences.Editor editor = shared.edit();
                    //以键值对方式传入数据
                    editor.putString("name", "Jay Chou");
                    editor.putInt("age", 37);
                    editor.putBoolean("married", true);
                    //提交数据
                    editor.commit();
                }

    最终得到的 data.xml 文件内容:

    <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
    <map>
        <string name="name">Jay Chou</string>
        <int name="age" value="37" />
        <boolean name="married" value="true" />
    </map>

    可以看到所有的数据都已经成功保存下来了,并且SharedPreferences 文件是使用XML格式来对数据进行管理的。

    注意:如果要清除 XML 中的所有数据使用 SharedPreferences.Editor 对象的 clear() 方法,就能够将 SharedPreferences 文件中的数据全部清除。

    ---------------------------------------从SharePreferences中读取数据--------------------------------------

    相比从 SharedPreferences 文件中存储文件,读取文件显得更加简单。SharedPreferences 对象中提供了一系列的 get 方法用于对存储的数据进行读取,每种 get 方法都对应了 SharedPreferences.Editor 中的一种 put 方法。

    这些 get 方法都接收两个参数,第一个参数是键,传入存储数据时使用的键就可以得到相应的值了,第二个参数是默认值,即表示当传入的键找不到对应的值时,会以什么样的默认值进行返回。

    获取 SharedPreferences 文件数据,并打印到控制台:

                public void onClick(View v) {
                    //获取SharedPreferences对象
                    SharedPreferences shared = getSharedPreferences("data", MODE_PRIVATE);
                    //获取xml数据
                    String name = shared.getString("name", "null");
                    int age = shared.getInt("age", 0);
                    boolean married = shared.getBoolean("married", false);
                    //获取不存在的数据
                    String hobby = shared.getString("hobby", "unknown");
                    //打印日志记录
                    Log.d("woider", "name: " + name);
                    Log.d("woider", "age: " + age);
                    Log.d("woider", "married: " + married);
                    Log.d("woider", "hobby: " + hobby);
                }

    日志截图:

  • 相关阅读:
    【转】把VS的智能提示快捷键改成Eclipse的习惯
    论文的写作 —— 参考文献的格式
    论文的写作 —— 参考文献的格式
    OpenMP并行编程应用—加速OpenCV图像拼接算法
    计算广告(computational advertising)
    计算广告(computational advertising)
    开源|LightGBM:三天内收获GitHub 1000+ 星
    Logistic Regression 的简单推导
    Logistic Regression 的简单推导
    在电影里走遍中国
  • 原文地址:https://www.cnblogs.com/woider/p/5136728.html
Copyright © 2011-2022 走看看