SharedPreferences 是一种轻量级的存储工具
以Key-Value形式存储,存储在data/data/包名/Shared_Prefs目录下
只能存储五种数据类型:Boolean Float Long Int String
获取SharedPreferences的两种方式:
1.调用Context对象的getSharedPreferences()方法
2.调用Activity对象的getPreferences()方法
区别:
通过1获得的SharedPreferences对象可被在同一应用程序中使用
通过2获得的SharedPreferences对象只能在该Activity中使用
SharedPreferences的四种访问模式:
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,
只能被当前应用程序访问
,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件.
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入
将数据保存至SharedPreferences:
//定义一个缓存对象
private SharedPreferences sp;
//定义一个缓存对象的数据编辑对象
private SharedPreferences.Editor editor;
//初始化缓存对象---第一个参数文件名,第二个参数访问模式 sp = getSharedPreferences("yaolin", Context.MODE_PRIVATE); //获得编辑对象 editor = sp.edit(); //添加数据 editor.putString("yl", "lh"); editor.putBoolean("yl1", true); editor.putFloat("yl2", 0.5f); editor.putInt("yl3", 520); editor.putLong("yl4", 521); //提交任务 editor.commit();
从SharedPreferences获取数据:
String yl1 = sp.getString("yl", null);
Boolean yl2 = sp.getBoolean("yl1", false);
Float yl3 = sp.getFloat("yl2", 1f);
int yl4 = sp.getInt("yl3", 9);
Long yl5 = sp.getLong("yl4", 99);
Log.i("lanou", yl1 + "***" + yl2 + "***" + yl3 + "***" + yl4 + "***" + yl5 + "***") ;
用单例模式封装的SharedPreferences:
优点:不用重复的创建SharedPrefernces对象,节约资源
public class PreferencesHelper { private static final String PREFERENCES_NAME = "en"; //文件名 private static SharedPreferences sp; private static SharedPreferences.Editor editor; private static PreferencesHelper helper; public PreferencesHelper() { sp = BaseApplication.getContext().getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE); editor = sp.edit(); } //初始化自定义缓存对象 public static PreferencesHelper getInstance(){ if (helper == null) { helper = new PreferencesHelper(); } return helper; } public void setUrl(String url){ editor.putString("lh", url).commit(); } public String getUrl(){ return sp.getString("lh", null); } }
将数据保存至SharedPreferences:
PreferencesHelper.getInstance().setUrl("lh");
从SharedPreferences获取数据:
PreferencesHelper.getInstance().getUrl();