数据存储之SharedPreference

来源:互联网 发布:域名续费越来越贵 编辑:程序博客网 时间:2024/05/22 19:33

数据存储之SharedPreferences

  • 默认存储在/data/data/包名/shared_prefs/文件名
  • 基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息等较简单的数据类型

常用的文件的操作模式

MODE_PRIVATE: 默认的操作,表示只有当前应用程序才可以对SharedPreferences文件读写。

MODE_MULTI_PROCESS 一般用于会有多个进程中对同一个SharedPreferences文件进行读写的情况。


实现SharedPreferences存储的步骤

  1. 获取SharedPreferences对象
  2. 调用SharedPreferences对象的edit()方法获取SharedPreferences.Editor对象
  3. 向SharedPreferences.Editor对象中添加数据,使用putXXX()方法
  4. 调用commit()提交数据,完成数据存储

添加数据的putXXX()类型方法具体有:

putString(String key, @Nullable String value)

putStringSet(String key, @Nullable Set values)

putInt(String key, int value)

putLong(String key, long value)

putFloat(String key, float value)

putBoolean(String key, boolean value)

Editor下的其他方法:

remove(String key) 移除preferences中的某一key值对应的数据

clear() 清除preferences中的所有数据

commit() 提交数据


获取SharedPreferences对象的几种方法

1.Context类中的getSharedPreferences()方法

//Context类中这样定义的,传入参数为(文件名,操作模式)@Overridepublic SharedPreferences getSharedPreferences(String name, int mode) {    return mBase.getSharedPreferences(name, mode);}//调用SharedPreferences sp = this.getSharedPreferences("config", MODE_PRIVATE);

2.Activity类中的getPreferences()方法

//Activity类这样定义,只需要传入操作模式,使用这个方法会自动把当前活动的类名作为SharedPreferences的文件名public SharedPreferences getPreferences(int mode) {    return getSharedPreferences(getLocalClassName(), mode);}//调用SharedPreferences sp=getPreferences(MODE_PRIVATE);

3.使用PreferenceManager类中的getDefaultSharedPreferences()方法

//PreferenceManager类中这样定义,这是一个静态方法,接收一个Context参数,并自动把当前应用程序的包名作为前缀来命名SharedPreferences文件public static SharedPreferences getDefaultSharedPreferences(Context context) {    return context.getSharedPreferences(getDefaultSharedPreferencesName(context),            getDefaultSharedPreferencesMode());}//调用SharedPreferences sp=PreferenceManager.getDefaultSharedPreferences(this);

使用adb命令查看SharedPreferences文件

root@android:/data/data/com.example.datastore # cd shared_prefscd shared_prefsroot@android:/data/data/com.example.datastore/shared_prefs # lslsconfig.xmlroot@android:/data/data/com.example.datastore/shared_prefs # cat config.xmlnfig.xml                                                                      <<?xml version='1.0' encoding='utf-8' standalone='yes' ?><map>    <string name="item">SharedPreferences</string></map>

Editor为SharedPreferences文件的编辑器,有以下几种方法:

putString(String key, @Nullable String value)

putStringSet(String key, @Nullable Set values)

putInt(String key, int value)

putLong(String key, long value)

putFloat(String key, float value)

putBoolean(String key, boolean value)

remove(String key)

clear()

在Editor中标记以从首选项中删除所有值。一旦commit被调用,唯一剩余的首选项将是你在这个编辑器中定义的任何一个

commit()

提交Editor编辑的内容

存储数据

使用Editor对象添加值

SharedPreferences sp = this.getSharedPreferences("config", MODE_PRIVATE);SharedPreferences.Editor editor = sp.edit();    editor.putString("item", data);    ...    editor.commit();

读取数据

使用sp对象来获取值

从首选项中检索所有值

Map<String, ?> getAll();

从首选项中检索字符串值

@NullableString getString(String key, @Nullable String defValue);

从首选项中检索一组String值

@NullableSet<String> getStringSet(String key, @Nullable Set<String> defValues);

从首选项中检索一个int值

int getInt(String key, int defValue);

从偏好中检索一个long值

long getLong(String key, long defValue);

从首选项中检索浮点值

float getFloat(String key, float defValue);

从首选项中检索布尔值

boolean getBoolean(String key, boolean defValue);

代码调用

SharedPreferences sp = this.getSharedPreferences("config", MODE_PRIVATE);sp.getString("item", "data is null")//key值,默认值sp.getXXX...
原创粉丝点击