美文网首页
Android - SharedPreferences 数据存储

Android - SharedPreferences 数据存储

作者: 徘徊0_ | 来源:发表于2017-11-01 14:51 被阅读0次

    一: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也推荐使用。如果不需要返回值的话,推荐使用!

    相关文章

      网友评论

          本文标题:Android - SharedPreferences 数据存储

          本文链接:https://www.haomeiwen.com/subject/ppywpxtx.html