SharedPreferences

来源:互联网 发布:java 字符串转换字节 编辑:程序博客网 时间:2024/06/16 17:57

我们所使用的所有应用程序都会涉及到数据的输入、输出,比如应用程序的参数设置、程序运行状态数据都要保存到外部存储器上,这样退出程序或断电之后数据才不会丢失。

这就涉及到了数据持久化技术。

Android提供了三种数据持久化方式:

  • 文件存储
  • SharedPreferences
  • 数据库存储

有时,当我们的应用有少量数据需要保存,而这些数据的格式很简单的时候(例如应用程序的配置信息,普通的字符串等),我们可以使用Android提供的SharedPreferences进行保存。

SharedPreferences保存的数据主要是类似于配置信息格式的数据,它使用键值对(key-value)的方式来存储数据。


读取数据|SharedPreferences

SharedPreferences接口主要负责读取应用程序的Preferences数据,有以下几个方法:

  • boolean contains(String key):判断SharedPreferences是否包含特定key的数据。

  • abstract Map getAll():获取SharedPreferences数据里全部的key-value对。

  • boolean getXxx(String key , xxx defValue):获取SharedPreferences数据里指定的key对应的value。
    若指定的key不存在,则返回默认值defValue。xxx可以是各种基本类型的值。


写入数据|SharedPreferences.Editor

SharedPreferences接口本身并没有提供写入数据的能力,想要写入数据要通过它的内部接口。通过调用edit()方法即可获取Editor对象。

Editor有以下几种方法来向SharedPreferences写入数据:

  • SharedPreferences.Editor putXxx(String key,xxx value):向SharedPreferences存入指定的数据。

  • SharedPreferences.Editor remove(String key):删除SharedPreferences里指定key对应的数据项。

  • SharedPreferences.Editor clear():清空SharedPreferences里的数据。

  • boolean commit():当Editor编辑完成后,要commit修改。


获取SharedPreferences对象

前面已经多次提过,SharedPreferences本身是一个接口。程序无法直接创建SharedPreferences实例,但我们可以通过以下几种方法来得到SharedPreferences对象:

  1. Context类中的getSharedPreferences(String name,int mode)方法.
    这个方法接受两个参数,第一个是SharedPreferences文件的名称,若指定的文件不存在则创建一个,第二个参数用于指定操作模式。
    目前主要用两种模式可以选择:

    • Context.MODE_PRIVATE默认的操作模式,和传入0效果一样。指定该SharedPreferences数据只能被本应用程序读写。

    • Context.MODE_PROCESS:一般用于有多个进程对同一个SharedPreferences文件进行读写的情况。

    • Context.MODE_WORLD_READABLE:能被其他应用程序读,但写不了

    • Context.MODE_WORLD_WRITEABLE:能被其他应用程序读和写

    :后两种从Android 4.2以后因为安全问题就不再推荐使用,若需将应用程序内部的数据供其他应用访问,可使用ContentProvider

  2. Activity类getPreferences(int mode)方法:该方法只接收了一个操作模式作为参数,使用该方法时会自动将当前活动的类名作为SharedPreferences的文件名。

  3. PreferenceManager类中的static SharedPreferences getDefaultSharedPreferences(Context context)方法:
    静态方法。接收一个Context参数,自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件


注:知识点参考自Android官方文档、《疯狂Android讲义》|李刚以及《第一行代码》| 郭霖

0 0
原创粉丝点击