一:SharedPreferences
它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据(key - value),文件存放在/data/data/<package name>/shared_prefs目录下
Android 中得到SharedPreferences方法有三种。
1,Context getSharedPreferences(String name , int mode);
常用方法,可以自己设置SharedPreferences 的name,调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享。
例如:
SharedPreferences prefs= getSharedPreferences("MySp",MODE_PRIVATE) ;
//SharePreferences本身不支持存储和修改,需要通过Editor对象来进行操作
//edit 是用于数据的添加,删除,修改和查询操作
prefs.edit().putInt("age", 20);
prefs.edit().putString("name", "Tom");
prefs.edit().apply();
2,Activity 的方法
Activity的 getPreferences(int mode)
方法创建的SharedPreferences
的文件名称为:getLocalClassName.xml
该名称为包含本地包名的名字。调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用。
3,PreferenceManager 的方法
PreferenceManager.getDefaultSharedPreferences(Context context)
方法是使用 包名+"_preference"
作为存储文件名源码感兴趣的可以自己去看。最终还是使用的Context的方法。
注:每个应用都有一个默认的配置文件preferences.xml,使用getDefaultSharedPreferences获取。
二:SharedPreferences基本用法
1,MODE
- MODE_PRIVATE:则该配置文件只能被自己的应用程序访问。(默认,也是常用的,权限控制)在该模式下,写入的内容会覆盖原文件的内容。
- MODE_APPEND:会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.。(主要用于存储文件时的选项)
2,增删改操作
//打开Preferences,名称为 MyPf ,如果存在则打开它,否则创建新的Preferences
SharedPreferences pf = getSharedPreferences("MyPf", MODE_PRIVATE);
//每次调用.edit() 都会new一个新的Editor
SharedPreferences.Editor editor = prefs.edit();
//增加一个 key:age value:20 的数据
editor.putInt("age", 20);
editor.apply();//提交操作也可以用 commit()
//删除 需要传入key
editor.remove("age");
editor.apply();
//修改 key:需要修改的key值 ,value:修改的值
editor.putInt("age", 10);
editor.apply();
//查询 第一个参数:key 第二个参数:默认值(查询不到就返回该值)
int getAge = pf.getInt("age", 30);
//清除所有数据
editor.clear();
editor.apply();
3,apply() 和 commit() 提交方式的区别
commit:commit是同步的提交到硬件磁盘。并且有返回值boolean,可以判断该操作是否成功!
apply() :异步提交,比较高效,AS也推荐使用。如果不需要返回值的话,推荐使用!