一起学android之SharedPreferences 讲解

来源:互联网 发布:琼恩 龙母 知乎 编辑:程序博客网 时间:2024/05/22 17:50
  1. <pre code_snippet_id="220451" snippet_file_name="blog_20140306_1_1587302" class="java" name="code">/* 
  2.      * Android数据存储之SharedPreferences 
  3.      * 步骤: 
  4.      * 一、根据Context获取SharedPreferences对象    
  5.      * 二、利用edit()方法获取Editor对象。    
  6.      * 三、通过Editor对象存储key-value键值对数据。    
  7.      * 四、通过commit()方法提交数据。 
  8.      */  
  9.     public void setSharedPreferences(){  
  10.         //一、根据Context获取SharedPreferences对象   
  11.         SharedPreferences sharedPreferences=context.getSharedPreferences("bill", MODE_PRIVATE);  
  12.         /* 
  13.          * context.getSharedPreferences("bill",MODE); 
  14.          * MODE模式支持以下几种: 
  15.          *1、 检查文件是否存在,存在就往文件追加内容,否则就创建新文件。 
  16.          *SharedPreferences sharedPreferences=context.getSharedPreferences("bill", MODE_APPEND); 
  17.          *2、表示当前文件可以被其他应用读取 
  18.          *SharedPreferences sharedPreferences=context.getSharedPreferences("bill", MODE_WORLD_READABLE); 
  19.          *3、表示当前文件可以被其他应用写入 
  20.          *SharedPreferences sharedPreferences=context.getSharedPreferences("bill", MODE_WORLD_WRITEABLE); 
  21.          */  
  22.         //二、利用edit()方法获取Editor对象。   
  23.         Editor editor=sharedPreferences.edit();  
  24.         //三、通过Editor对象存储key-value键值对数据。  
  25.         Set<String> values=new HashSet<String>();         
  26.         editor.putBoolean("boolean"true);//存储Boolean类型  
  27.         editor.putFloat("float"3);//存储float类型  
  28.         editor.putInt("int"1);//存储int类型  
  29.         editor.putLong("long"4);//存储long类型  
  30.         editor.putString("string""billgu");//存储string类型  
  31.         editor.putStringSet("set", values);//存储set多维数组  
  32.         // 四、通过commit()方法提交数据。  
  33.         editor.commit();  
  34.           
  35.           
  36.         /* 
  37.          * 数据存存储完毕,以下是在相应事件或其他activity中去读取存储的数据 
  38.          */  
  39.         SharedPreferences sharedPreferences_read=context.getSharedPreferences("bill", MODE_PRIVATE);  
  40.         Boolean bool=sharedPreferences_read.getBoolean("boolean"false);//默认false  
  41.         float floa=sharedPreferences_read.getFloat("float"0);//默认0  
  42.         int in=sharedPreferences_read.getInt("int"0);//默认0  
  43.         long lon=sharedPreferences_read.getLong("long"0);//默认0  
  44.         String string=sharedPreferences_read.getString("string"null);//默认null  
  45.         Set<String> set=sharedPreferences_read.getStringSet("set"null);//默认null  
  46.         Toast.makeText(context, "读到数据:"+floa+"\n"+in+"\n"+lon+"\n"+string, Toast.LENGTH_SHORT).show();  

  1.     }  


SharedPreferences存储共享变量的文件路径位于“/data/data/应用程序包/shared_prefs”目录下,通过adb shell,可以看到如下所示:

查看当前目录:

# pwd

/data/data/com.min.ijoke/shared_prefs

显示当前目录下的文件:

# ls
min_ijoke.xml // 此文件就是存储SharedPreferences变量的文件
AppSettings.xml
PushFlag.xml
Finalize_Flag.xml
ShowAdFlag.xml

Start_Tag.xml

查看SharedPreferences变量的文件内容,都是键值对形式存储在xml文件中的。

以下是我的程序中使用到的变量和值:

# cat min_ijoke.xml
[html] view plain copy
  1. <?xml version='1.0' encoding='utf-8' standalone='yes' ?>  
  2. <map>  
  3. <int name="position" value="6" />  
  4. <boolean name="bgImageFlg" value="false" />  
  5. <int name="textColor" value="-1339948835" />  
  6. <int name="mPositionDongwu" value="4" />  
  7. <int name="mPositionFuqi" value="5" />  
  8. <boolean name="noTitle" value="true" />  
  9. <boolean name="fontBold" value="true" />  
  10. <boolean name="fullScreen" value="true" />  
  11. <int name="mainBgColor" value="-17204" />  
  12. <int name="colorFlg" value="2" />  
  13. </map>  


0 0
原创粉丝点击