Android存储方式之SharedPreferences

概述

SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据。SharedPreferences只能保存简单类型的数据,例如,String、int等。一般会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中,再用SharedPreferences保存。

使用步骤

A、存放数据信息

SharedPreferences 存数据的方式是以xml文件的格式存在,xml文件已键值对的方式存取数据使用:

/*
 *  通过getSharedPreferences方法获取/或者创建某一shared_prefs文件
 *  1、获取SharedPreferences对象
 *  第一个参数指定要打开的shared_pref文件,如果没有则会创建
 *  第二个参数指定创建的shared_pref文件的访问权限
 */
SharedPreferences sp = getSharedPreferences("my_pref", Context.MODE_PRIVATE);
// 2、获取Editor对象,才能想Shared中写入数据
Editor editor = sp.edit();
// 3、通过editor.put的方法可以往shared中写入数据
editor.putString("isLogged", "true");
// 4、editor需要调用commit才将数据写入
editor.commit();

B、读取数据信息

//1、获取Preferences
SharedPreferences sp = getSharedPreferences("my_pref", Context.MODE_PRIVATE);
//2、取出数据
String content = sp.getString("isLogged", "initial value has not been initialized");
Toast.makeText(this, "content is " + content, Toast.LENGTH_SHORT).show();

以上就是Android中SharedPreferences的使用方法,其中创建的Preferences文件存放位置可以在Eclipse中查看:
DDMS->File Explorer //shared_prefs/setting.xml

getSharedPreferences和getDefaultSharedPreferences用法差别

SharedPreferences文件存储共享变量的文件路径位于“/data/data/应用程序包/shared_prefs/”目录下
首先从调用层次上来分:
1. getPreferences(int mode)是由Activity来调用的。
2. getSharedPreferences(String name,int mode)由Context调用。
3. getDefaultSharesPreferences(Context context)是PreferenceManager的静态方法

从文件命名来说:
1. getPreferences(int mode)不需要传递文件名,默认使用不带包名的类名作为文件名(即Activity Java文件名,不带后缀)。
2. getSharedPreferences(String name,int mode)需要提供文件名,当然是以提供的name作为文件名。
3. getDefaultSharedPreferences(Context context)也不需要提供文件名,默认使用包名作为文件名。

一些博客说getPreferences(int mode)创建的SharedPreferences文件只能在当前的Activity进行访问,其实可以在其他的Activity也可以访问,这时我们需要使用getSharedPreferences(String name,int mode),name为之前的Activity Java类的名称(不带后缀)

对SharePreference的简单封装

public class PrefUtils {

    public static void putBoolean(String key, boolean value, Context ctx) {
        SharedPreferences sp = ctx.getSharedPreferences("config",
                Context.MODE_PRIVATE);
        sp.edit().putBoolean(key, value).commit();
    }

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

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

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

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

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

    public static void remove(String key, Context ctx) {
        SharedPreferences sp = ctx.getSharedPreferences("config",
                Context.MODE_PRIVATE);
        sp.edit().remove(key).commit();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值