SharedPreferences(共享首选项)的用法

/*以下内容均摘自安卓开发者官网*/

存储选项

 

Android 为您提供了多种选项来保存永久性应用数据。您所选择的解决方案取决于您的特定需求,例如数据应该是应用的私有数据,还是可供其他应用(和用户)访问,以及您的数据需要多少空间等。

您的数据存储选项如下:

    共享首选项     在键值对中存储私有原始数据。

    内部存储         在设备内存中存储私有数据。

    外部存储         在共享的外部存储中存储公共数据。

    SQLite 数据库  在私有数据库中存储结构化数据。

    网络连接         在网络中使用您自己的网络服务器存储数据。

 

今天学习的是共享首选项的用法

 

     SharedPreferences 类提供了一个通用框架,以便您能够保存和检索原始数据类型的永久性键值对。 您可以使用 SharedPreferences 来保存任何原始数据:布尔值、浮点值、整型值、长整型和字符串。 此数据将跨多个用户会话永久保留(即使您的应用已终止亦如此)。

      要获取应用的 SharedPreferences 对象,请使用以下两个方法之一:

  •  getSharedPreferences() - 如果您需要多个按名称(使用第一个参数指定)识别的首选项文件,请使用此方法。
  •  getPreferences() - 如果您只需要一个用于 Activity 的首选项文件,请使用此方法。 由于这将是用于 Activity 的唯一首选项文件,因此无需提供名称。    

     

      getPreferences()是Activity类的方法,有一个int型参数mode,返回值是SharedPreferences。

         参数可以有以下几种:

               MODE_PRIVATE :默认类型,生成的文件只能被调用的应用使用或者是共享的应用。

    MODE_APPEND  :  在已存在的文件末尾追加内容,不重写。

               MODE_WORLD_READABLE :允许所有应用读取文件,不建议使用。

               MODE_WORLD_WRITEABLE :允许所有应用写文件,不建议使用 。                 

               MODE_MULTI_PROCESS :多进程共享数据,不建议使用。

 

SharedPreferences getSharedPreferences (String name, int mode)

        getSharedPreferences()是ContextWrapper类的方法,ContextWrapper类继承自Context类。该方法有两个参数,name参数指定共享首选项文件名称,

        mode参数和getPreferences方法参数用法相同。


    要写入值:

  1. 调用 edit() 以获取 SharedPreferences.Editor
  2. 使用 putBoolean() 和 putString() 等方法添加值。
  3. 使用 commit() 提交新值

   要读取值,请使用 getBoolean() 和 getString() 等 SharedPreferences 方法。

          getString(String key , String default)方法有两个参数,第一个是要读数据的key值,第二个是数据不存在默认返回的值。

          getBoolean(String key , boolean default)方法有两个参数,第一个是要读数据的key值,第二个是数据不存在时默认返回的值。

 

 

实例:

1.getPreferences用法:

       

       

       没有使用editor.commit方法时,是不会初始化生成shared_prefs文件的同样对已经存在的shared_prefs文件也不会有任何修改的。

 

          

           创建成功会相应生成如图所示的xml文件。文件内容是key-value格式。

          

 

2.getSharedPreferences用法

       

       生成指定文件名的文件。

 

3.读取数据

  

   

  读取数据成功,如果数据不存在,会按照第二个参数信息返回。

     

    

 

 

          

          

       

       

 

     

 

      

 

 

 

 

 

 

 

 

  

 

posted @ 2018-03-29 11:25  把握当下  阅读(850)  评论(0编辑  收藏  举报