|
|
|
|
移动端

3.2.1 SharedPreferences 存储

《Android游戏开发从入门到精通》第3章Android 游戏开发基础,本章将引导读者开始Android 手机游戏开发,详细讲解Android 游戏开发的基本知识,为读者进行本书后面知识的学习打下基础。本节为大家介绍SharedPreferences 存储。

作者:王玉芹来源:机械工业出版社|2017-11-14 10:23

有奖调研 | 1TB硬盘等你拿 AI+区块链的发展趋势及应用调研


3.2.1 SharedPreferences 存储

SharedPreferences 存储方式是Android 提供的一种用来存储简单设置信息的机制,经常用于存储常见的欢迎语、登录用户名和密码等信息。SharedPreferences 使用“键-值”对的方式进行存储,这样开发人员可以很方便地实现数据的读取和存入。

通过使用SharedPreferences 存储方式,可以保存Android 平台中的Long 长整形、Int整形、String 字符串型数据。可以将SharedPreferences 中的数据分为多种权限,最常用的是设置为全局共享访问。最终会以XML 方式来保存数据。在处理这些XML 数据时,Dalvik会通过自带底层的本地XML Parser 进行解析,比如XMLpull 方式,这种方式会节约内存资源。

在两个Activity 之间,除了可以通过Intent 来传递数据外,还可以用SharedPreferences 共享数据的方式实现数据传递。使用SharedPreferences 的方法很简单,例如可以先在A 中设置如下代码。

  1. editor sharedata = getSharedPreferences("data", 0).edit();  
  2. sharedata.putString("item","getSharedPreferences");  
  3. sharedata.commit(); 

然后可以在B 中编写如下获取设置信息的代码。

  1. SharedPreferences sharedata = getSharedPreferences("data", 0);  
  2. String data = sharedata.getString("item", null);  
  3. Log.v("cola","data="+data); 

最后可以通过以下Java 代码将获取的存储数据显示出来。

  1. <SPAN class=hilite1>SharedPreferences  
  2. </SPAN> sharedata = getSharedPreferences("data", 0);  
  3. String data = sharedata.getString("item", null);  
  4. Log.v("cola","data="+data); 

使用SharedPreferences 的基本方法,基本上和使用J2SE(java.util.prefs.Preferences)的方法一样,最终目的是用一种简单的、透明的方式保存用户个性化设置的字体、颜色等参数信息。在绝大多数应用程序中,都会提供“设置”或者“首选项”之类的界面,这些设置可以通过Preferences 来保存。开发者不需要知道信息到底以什么形式保存的,保存在什么地方。

在接下来的内容中,将通过一个具体实例来讲解SharedPreferences 存储数据的方法。

(1)编写文件SharedPreferencesHelper.java,主要代码如下。

  1. public class SharedPreferencesHelper {  
  2. SharedPreferences sp;  
  3. SharedPreferences.Editor editor;  
  4. Context context;  
  5. public SharedPreferencesHelper(Context c,String name){  
  6. ccontext = c;  
  7. sp = context.getSharedPreferences(name, 0);  
  8. editor = sp.edit();  
  9. }  
  10. public void putValue(String key, String value){  
  11. editor = sp.edit();  
  12. editor.putString(key, value);  
  13. editor.commit();  
  14. }  
  15. public String getValue(String key){  
  16. return sp.getString(key, null);  
  17. }  

(2)编写文件SharedPreferencesUsage.java,主要代码如下。

  1. public class SharedPreferencesUsage extends Activity {  
  2. public final static String COLUMN_NAME ="name";  
  3. public final static String COLUMN_MOBILE ="mobile";  
  4. SharedPreferencesHelper sp;  
  5. @Override  
  6. public void onCreate(Bundle savedInstanceState) {  
  7. super.onCreate(savedInstanceState);  
  8. sp = new SharedPreferencesHelper(this, "contacts");  
  9. sp.putValue(COLUMN_NAME, "我爱故乡月");  
  10. sp.putValue(COLUMN_MOBILE, "150xxxxxxxx");  
  11. String name = sp.getValue(COLUMN_NAME);  
  12. String mobile = sp.getValue(COLUMN_MOBILE);  
  13. TextView tv = new TextView(this);  
  14. tv.setText("NAME:"+ name + "\n" + "MOBILE:" + mobile);  
  15. setContentView(tv);  
  16. }  

通过上述代码,在SharedPreferences 中存储了“NAME”和“MOBILE”的数据。因为上述代码中的pack_name 为:

  1. package com.android.SharedPreferences; 

所以存放数据的路径为:

  1. data/data/com.android.SharedPreferences/share_prefs/contacts.xml 

其中文件contacts.xml 的内容如下。

  1. <?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
  2. <map> 
  3. <string name="mobile">150xxxxxxxx</string> 
  4. <string name="name">我爱故乡月</string> 
  5. </map> 

执行后的效果如图3-2 所示。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

非常网管——网络服务

本书使用通俗易懂的语言,通过大量的实例,从实际应用的角度出发,全面系统地介绍了网络服务操作系统平台、电子邮件系统、Web站点和FTP站点...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊