SharedPreferences概述
SharedPreferences是Android平台上一个轻量级的存储辅助类,用来保存应用的一些常用配置。
它提供了String,set,int,long,float,boolean六种数据类型。
SharedPreferences的数据以键值对的进行保存在以xml形式的文件中。
在应用中通常做一些简单数据的持久化缓存。
SharedPreferences使用
获取 SharedPreferences
//获取SharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences("appConfig",MODE_PRIVATE);
getSharedPreferences方法参数详解
- name 存储文件名字
mode 存储方式 其值的含义如下
值 说明 Context.MODE_PRIVATE 指定该SharedPreferences数据只能被本应用程序读、写 Context.MODE_WORLD_READABLE 指定该SharedPreferences数据能被其他应用程序读,但不能写 Context.MODE_WORLD_WRITEABLE 指定该SharedPreferences数据能被其他应用程序读 Context.MODE_APPEND 该模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件;
增加数据
//获取SharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences("appConfig",MODE_PRIVATE);
//获取Editor对象的引用
SharedPreferences.Editor editor = sharedPreferences.edit();
//将获取过来的值放入文件
editor.putString("userAccount", "admin@1okk.com");
editor.putString("userPassword", "admin");
editor.putInt("age", 30);
editor.putBoolean("islogin",true);
// 提交数据
editor.commit();
点击添加按钮以后我们可以看到在 data/data/ 应用程序包名的 shared_prefs 文件夹下生成了一个 appConfig.xml 的 xml 文件。点击可以打开该文件,可以看到该文件保存了如下的数据。
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="userAccount">admin@1okk.com</string>
<string name="userPassword">admin</string>
<int name="age" value="30" />
<boolean name="islogin" value="true" />
</map>
读取数据
读取数据可以通过获取SharedPreferences对象,通过 SharedPreferences 对象可以获取存储的数据值,第二个参数一般是个默认值,表示当获取数据的时候没有该key则返回一个默认值。
//获取SharedPreferences对象
SharedPreferences sharedPreferences= getSharedPreferences("appConfig", MODE_PRIVATE);
String name=sharedPreferences.getString("userAccount","");
int age = sharedPreferences.getInt("age",0);
boolean islogin = sharedPreferences.getBoolean("islogin",true);
Log.i("lucashu","name:"+ name +" age:" + age +" islogin:" + islogin);
删除数据
删除数据跟添加数据有点类似 也是通过Editor对象来完成。
//获取SharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences("appConfig",MODE_PRIVATE);
//获取Editor对象的引用
SharedPreferences.Editor editor = sharedPreferences.edit();
//将获取过来的值放入文件
editor.remove("userPassword");
// 提交数据
editor.commit();
修改数据
修改数据跟增加数据类似,覆盖原来的数据即修改数据。
//获取SharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences("appConfig",MODE_PRIVATE);
//获取Editor对象的引用
SharedPreferences.Editor editor = sharedPreferences.edit();
//将获取过来的值放入文件
editor.putString("userAccount", "i@1okk.com");
editor.putString("userPassword", "admin1");
editor.putInt("age", 31);
editor.putBoolean("islogin",false);
// 提交数据
editor.commit();
清除数据
我们可以通过Editor对象的clear方法来完成清楚数据。
//获取SharedPreferences对象
SharedPreferences sharedPreferences = getSharedPreferences("appConfig", MODE_PRIVATE);
//获取Editor对象的引用
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
// 提交数据
editor.commit();
清除以后user.xml文件并不会删除,但里面的数据都没了
SharedPreferences封装类
package net.moao.handheldfixedpointwifi.utils.preferencesUtil;
import android.content.Context;
import android.content.SharedPreferences;
/**
* App 使用配置 轻量化存储 工具
* @author Moao.Net
* @DATE 2024/6/25
*/
public class AppConfig{
public static String PREFERENCE_NAME = "appConfig";
/**存储字符串*/
public static boolean putString(Context context, String key, String value) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
SharedPreferences.Editor editor = preferences.edit();
editor.putString(key, value);
return editor.commit();
}
/**读取字符串*/
public static String getString(Context context, String key) {
return getString(context, key, null);
}
/**读取字符串(带默认值的)*/
public static String getString(Context context, String key, String defaultValue) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
return preferences.getString(key, defaultValue);
}
/**存储整型数字*/
public static boolean putInt(Context context, String key, int value) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt(key, value);
return editor.commit();
}
/**读取整型数字*/
public static int getInt(Context context, String key) {
return getInt(context, key, -1);
}
/**读取整型数字(带默认值的)*/
public static int getInt(Context context, String key, int defaultValue) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
return preferences.getInt(key, defaultValue);
}
/**存储长整型数字*/
public static boolean putLong(Context context, String key, long value) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
SharedPreferences.Editor editor = preferences.edit();
editor.putLong(key, value);
return editor.commit();
}
/**读取长整型数字*/
public static long getLong(Context context, String key) {
return getLong(context, key, 0xffffffff);
}
/**读取长整型数字(带默认值的)*/
public static long getLong(Context context, String key, long defaultValue) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
return preferences.getLong(key, defaultValue);
}
/**存储Float数字*/
public static boolean putFloat(Context context, String key, float value) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
SharedPreferences.Editor editor = preferences.edit();
editor.putFloat(key, value);
return editor.commit();
}
/**读取Float数字*/
public static float getFloat(Context context, String key) {
return getFloat(context, key, -1.0f);
}
/**读取Float数字(带默认值的)*/
public static float getFloat(Context context, String key, float defaultValue) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
return preferences.getFloat(key, defaultValue);
}
/**存储boolean类型数据*/
public static boolean putBoolean(Context context, String key, boolean value) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(key, value);
return editor.commit();
}
/**读取boolean类型数据*/
public static boolean getBoolean(Context context, String key) {
return getBoolean(context, key, false);
}
/**读取boolean类型数据(带默认值的)*/
public static boolean getBoolean(Context context, String key, boolean defaultValue) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
return preferences.getBoolean(key, defaultValue);
}
/**清除数据*/
public static boolean clearPreferences(Context context) {
SharedPreferences pref = context.getSharedPreferences(PREFERENCE_NAME, 0);
SharedPreferences.Editor editor = pref.edit();
editor.clear();
return editor.commit();
}
}
评论 (0)