android SharedPreferences 读写 及 工具类介绍

来源:互联网 发布:linux 查看自启动服务 编辑:程序博客网 时间:2024/06/02 06:52

保存到Preference

当有一个相对较小的key-value集合需要保存时,可以使用SharedPreferences APIs。
SharedPreferences 对象指向一个保存key-value pairs的文件,并为读写他们提供了简单的方法。
每个 SharedPreferences 文件均由framework管理,其既可以是私有的,也可以是共享的。


获取SharedPreference

我们可以通过以下两种方法之一创建或者访问shared preference 文件:

  • getSharedPreferences() — 如果需要多个通过名称参数来区分的shared preference文件, 名称可以通过第一个参数来指定。可在app中通过任何一个Context 执行该方法。
  • getPreferences() — 当activity仅需要一个shared preference文件时。因为该方法会检索activity下默认的shared preference文件,并不需要提供文件名称。

  • getPreferences()使用当前activity的getLocalClassName()作为默认名称,即activity的名称。(例如MainActivity)

SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);

四种MODE

在 Android系统提供的API中, 获取 Preferences对象有四种类型,分别如下:

文件创建模式:Activity.MODE_APPEND
如果该文件已经存在,然后将数据写入,而不是抹掉它现有文件的末尾。
文件创建模式:MODE_PRIVATE
默认模式,在那里创建的文件只能由应用程序调用,即为私有的
文件创建模式:Activity.MODE_WORLD_READABLE
允许所有其他应用程序有读取和创建文件的权限。
文件创建模式:Activity.MODE_WORLD_WRITEABLE
允许所有其他应用程序具有写入、访问和创建的文件权限。


写Shared Preference

为了写shared preferences文件,需要通过执行edit()创建一个 SharedPreferences.Editor。

通过类似putInt()与putString()等方法传递keys与values,接着通过commit() 提交改变.

SharedPreferences.Editor editor = sharedPref.edit();int newHighScore = 59;editor.putInt(key, newHighScore);editor.apply(); // as会提示, commit() 更换为 apply()

读Shared Preference

为了从shared preference中读取数据,可以通过类似于 getInt() 及 getString()等方法来读取。在那些方法里面传递我们想要获取的value对应的key,并提供一个默认的value作为查找的key不存在时函数的返回值。如下:

long highScore = sharedPref.getInt(key, 0);Log.d(TAG, "onCreate: " + b + " " + highScore);

工具类介绍

tray
1424星
https://github.com/grandcentrix/tray

// 创建一个 preference 访问. 这是全局的 preferences.final AppPreferences appPreferences = new AppPreferences(getContext());// 保存一个key valueappPreferences.put("key", "lorem ipsum");// 根据key 读取value. key不存在使用第二个参数final String value = appPreferences.getString("key", "default");Log.v(TAG, "value: " + value);// 读取key 不存在的. 返回默认值final String defaultValue = appPreferences.getString("key2", "default");Log.v(TAG, "value: " + defaultValue); // value: default

gradle

dependencies {    compile 'net.grandcentrix.tray:tray:0.12.0'}

EasySP
63星
https://github.com/WhiteDG/EasySP

  • 保存数据到sharedpreferences
EasySP.init(context).putBoolean("boolean", true);//可以使用字符串资源作为保存的键EasySP.init(context).putBoolean(R.string.key_bool, true);//可以自定义sharedpreferences的文件名EasySP.init(context,"Custom").putBoolean("boolean", true);
  • 一句代码保存多条数据(链式调用)
EasySP.init(context)                .putBoolean(R.string.key_bool, true)                .putInt(R.string.key_int, 1)                .putString(R.string.key_string, "string")                .putLong(R.string.key_long, 1000000000)                .putFloat(R.string.key_float, 1.1f)                .put("put", 100)                .putStringSet(R.string.key_set, strings);
  • 读取数据
boolean booleanData = EasySP.init(context).getBoolean("bool");boolean booleanData = EasySP.init(context).getBoolean(R.string.key_bool,defValue);
  • 移除某个键对应的数据
EasySP.init(context).remove("bool");EasySP.init(context).remove(R.string.key_bool);
  • 清除所有数据
EasySP.init(context).clear();

gradle

dependencies {    compile 'com.white:easysp:1.0.0'}

参考文章

http://hukai.me/android-training-course-in-chinese/basics/data-storage/shared-preference.html

http://www.cnblogs.com/TerryBlog/archive/2010/06/18/1760598.html

https://github.com/grandcentrix/tray

https://github.com/WhiteDG/EasySP/blob/master/README_ZH.md


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大牙烂了个洞,痛怎么办 牙黑了有洞怎么办 牙齿内侧掉了一小块怎么办 龋坏的牙齿痛怎么办 2岁半宝宝蛀牙怎么办 3岁宝宝门牙腐蚀怎么办 2岁宝宝门牙有洞怎么办 三岁宝宝有龋齿怎么办 牙龈肿痛脸肿了怎么办 孕妇牙疼的厉害怎么办 智齿引起的牙疼怎么办 蛀牙了有个大洞牙痛怎么办 长了蛀牙牙疼怎么办 面饼表面长黑点怎么办 牙结石自己掉了怎么办 狗狗得了牙结石怎么办 牙结石掉了有洞怎么办 内衣的钩子会掉怎么办? 新胸罩肩带老掉怎么办 牙齿少了一小块怎么办 儿童牙齿有黑斑要怎么办 牙齿又黄又臭怎么办 大牙烂空了很臭怎么办 牙齿已经烂没了怎么办 牙齿已经蛀没了怎么办 牙齿整个蛀掉了怎么办 小孩恒牙长歪了怎么办 孩子换牙长歪了怎么办 9岁门牙磕松动了怎么办 牙齿摔断了一半怎么办 牙齿从根部断了怎么办 牙断了还有牙根怎么办 牙根断在牙龈里怎么办 后槽牙掉了一半怎么办 孩子门牙摔断了怎么办 2岁宝宝牙齿断了怎么办 小孩乳牙摔掉了怎么办 9孩子门牙磕断了怎么办 牙齿断了但没掉怎么办 大人门牙摔断了怎么办 兔子内牙太长了怎么办