SharedPreferences 存储

作者: wxyass 分类: Android 发布时间: 2017-03-29 17:13

SharedPreferences 存储

不同于文件的存储方式,SharedPreferences 是使用键值对的方式来存储数据的。也就是说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且 SharedPreferences 还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型的,存储的数据是一个字符串,读取出来的数据仍然是字符串。

写一个工具类

import android.content.Context;
import android.content.SharedPreferences;

/**
 * SharePrefrence的封装
 * 
 * @author Kevin
 * 
 */
public class PrefUtils {

    private static SharedPreferences mPrefs;

    public static void putBoolean(Context ctx, String key, boolean value) {
        if (mPrefs == null) {
            mPrefs = ctx.getSharedPreferences("config", Context.MODE_PRIVATE);
        }

        mPrefs.edit().putBoolean(key, value).commit();
    }

    public static boolean getBoolean(Context ctx, String key, boolean defValue) {
        if (mPrefs == null) {
            mPrefs = ctx.getSharedPreferences("config", Context.MODE_PRIVATE);
        }
        return mPrefs.getBoolean(key, defValue);
    }

    public static void putString(Context ctx, String key, String value) {
        if (mPrefs == null) {
            mPrefs = ctx.getSharedPreferences("config", Context.MODE_PRIVATE);
        }
        mPrefs.edit().putString(key, value).commit();
    }

    public static String getString(Context ctx, String key, String defValue) {
        if (mPrefs == null) {
            mPrefs = ctx.getSharedPreferences("config", Context.MODE_PRIVATE);
        }
        return mPrefs.getString(key, defValue);
    }

    public static void putInt(Context ctx, String key, int value) {
        if (mPrefs == null) {
            mPrefs = ctx.getSharedPreferences("config", Context.MODE_PRIVATE);
        }
        mPrefs.edit().putInt(key, value).commit();
    }

    public static int getInt(Context ctx, String key, int defValue) {
        if (mPrefs == null) {
            mPrefs = ctx.getSharedPreferences("config", Context.MODE_PRIVATE);
        }
        return mPrefs.getInt(key, defValue);
    }

    public static void remove(Context ctx, String key) {
        if (mPrefs == null) {
            mPrefs = ctx.getSharedPreferences("config", Context.MODE_PRIVATE);
        }

        mPrefs.edit().remove(key).commit();
    }
}  

将数据存储到文件中

Context 类中的 getSharedPreferences()方法

此方法接收两个参数,
第一个参数用于指定 SharedPreferences 文件的名称,如果指定的文件不存在则会创建一个,SharedPreferences 文件都是存放在/data/data//shared_prefs/目录下的。
第二个参数用于指定操作模式,主要有两种模式可以选择,MODE_PRIVATE 和 MODE_MULTI_PROCESS。MODE_PRIVATE 仍然是默认的操作模式,和直接传入 0 效果是相同的,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写。 MODE_MULTI_PROCESS 则一般是用于会有多个进程中对同一个 SharedPreferences 文件进行读写的情况。

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

主要可以分为三步实现。

  1. 调用 SharedPreferences 对象的 edit()方法来获取一个 SharedPreferences.Editor 对象。
  2. 向 SharedPreferences.Editor 对象中添加数据,比如添加一个布尔型数据就使用 putBoolean 方法,添加一个字符串则使用 putString()方法,以此类推。
  3. 调用 commit()方法将添加的数据提交,从而完成数据存储操作。

从 SharedPreferences 文件中读取数据更加的简单。

SharedPreferences 对象中提供了一系列的get方法用于对存储的数据进行读取,

每种get方法都对应了SharedPreferences.Editor 中的一种 put 方法,

比如:
读取一个布尔型数据就使用 getBoolean()方法,
读取一个字符串就使用 getString()方法。

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

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注