Android - SharedPreferences 数据存储

一:SharedPreferences

它是一个轻量级的存储类,特别适合用于保存软件配置参数。使用SharedPreferences保存数据,其背后是用xml文件存放数据(key - value),文件存放在/data/data//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也推荐使用。如果不需要返回值的话,推荐使用!

你可能感兴趣的:(Android - SharedPreferences 数据存储)