zoukankan      html  css  js  c++  java
  • Android——数据存储(二)(SharedPreferences存储)

    SharedPreferences存储

    SharedPreferences是使用键值对的方式来存储数据的。当保存一条数据时,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。而且SharedPreferences还支持多种不同的数据类型存储,存储的数据是什么类型,读取出来也是什么类型。保存的数据是用XML格式进行管理的。SharedPreferences文件都是存放在/data/data/<package name>/shared_prefs/目录下的;

     

    而且一个SharedPreferences对象只有一个实例返回给同名的调用者,这意味着它们将在编辑完成后立即看到彼此的编辑。

     

    使用SharedPreferences要先获取它的实例,Android中主要提供了3中方法用于得到SharedPreferences对象。

     

    • Context类中的getSharedPreferences(String name,int mode)方法:这个方法有两个参数,第一个参数用于指定要储存数据的SharedPreferences文件名;第二个参数用于指定操作模式,现在可以的只有填0或者MODE_PRIVATE,他们的效果是一样的,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写,还有三个模式已经不推荐使用了,分别是MODE_WORLD_READABLE、MODE_WORLD_WRITEABLE和MODE_MULTI_PROCESS。
    • Activity类中的getPreference(int mode)方法:这个方法只有一个接收操作模式的参数,操作模式和Context类中的getSharedPreferences方法中的操作模式一样,没有文件名参数是因为这个方法会自动将当前活动的类名作为SharedPreferences文件的文件名。
    • PreferenceManager类中的getDefaultSharedPreference(Context context)方法:这是一个静态方法,只有一个上下文参数,会自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。不过这个方法已经在Android 10被废弃了,不建议使用了。

     

    获取到SharedPreferences对象后,如果要存储数据,则需要调用SharedPreferences对象的edit()方法获取一个编辑器SharedPreferences.Editor对象,用于修改SharedPreferences对象中的值的接口。用putString()、putInt()、putBoolean()等这种方法来向SharedPreferences.Editor对象中添加键值对数据,这些方法都有两个参数,第一个是参数是键,即要存放数据的名字,第二个参数是要存放的值。最后再调用apply()方法将添加的数据提交就可以了,这样就完成了数据存储操作。

     

    如果要取出存储的数据,则获得要读取的SharedPreferences对象的实例后,再调用相应的getString()、getInt()、getBoolean()等方法就可以了,这些get方法也要传两个参数,第一个参数和put方法一样,为要取出数据的键,即名字;第二个参数是默认值,即表示当传入的键找不到对应的值时会返回默认值。

     

    存入代码:

     

    SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
    editor.putString("name","tom");
    editor.putInt("age",18);
    editor.apply();

    读出代码:

    SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
    String name = pref.getString("name","");
    int age = pref.getInt("age",0);

    参考Android帮助文档注意:这个类提供了强一致性保证。它使用了昂贵的操作,可能会降低应用程序的运行速度。经常改变属性或者可以容忍损失的属性应该使用其他机制。

     

    SharedPreferences.Editor接口还提供了一些其他方法:

     

    • clear():是把之前提交后保存的所有信息全部进行清空,同一次提交进行的操作如果含有clear()操作,则先执行clear()再执行其他,与代码前后顺序没有关系。
    • commit():和apply()方法作用差不多,不过这个会有返回值,写入成功返回true,失败返回false。但是更推荐使用apply()方法,因为apply() 方法进行提交会先将数据写入内存,然后异步写入磁盘,commit()方法是直接写入磁盘。如果频繁操作的话 apply() 的性能会优于 commit(),apply()会将最后修改内容写入磁盘。但是如果希望立刻获取存储操作的结果,并据此做相应的其他操作,应当使用 commit()。
    • remove(String key):传入要删除数据的键,然后再提交后进行实际删除。
  • 相关阅读:
    多态实现--虚函数与纯虚函数
    CentOS6编译安装gcc高版本
    Linux多进程CS服务器简单测试
    Linux单用户CS模型TCP通讯完全注释手册
    进程线程及其状态
    Java学习-字符串、字符、ASCII、数字的互相转换
    Java学习-素数
    Java学习-日期
    Java学习-多态
    Java学习-练习
  • 原文地址:https://www.cnblogs.com/mulin1999/p/13205837.html
Copyright © 2011-2022 走看看