`
trygood
  • 浏览: 79157 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SharedPreferences

阅读更多

SharedPreferences类似于Cookies
优点: 简单、方便、适合简单数据的快速保存
           缺点:1.存数的文件只能在同一包内使用,不能在不同包之间使用!
 
            2.默认将数据存放在系统路径下 /data/data/包名/  
           总结:其实本保存方式如同它的名字一样是个配置保存,虽然方便,但只适合存储比较简单的数据!

几点说明:
1. SharedPreferences的获取有两种方法:一是上面提到的通过Activity自带(本质来讲是Context的)的getSharedPreferences()方法,可以得到SharedPreferences对象。这种方法的好处是可以指定保存的xml文件名。另一种是通过PreferenceManager.getSharedPreferences(Context)获取SharedPreferences对象。这种方法不能指定保存的xml文件名,文件名使用默认的:<package name>+"_preferences.xml"的形式,不过如果在一个包里面采用这种方式需要保存多个这样的xml文件,可能会乱掉。建议采用第一种指定xml文件名的形式。
2. 数据的存入必须通过SharedPreferences对象的编辑器对象Editor来实现,存入(put)之后与写入数据库类似一定要commit。
1.
2.
3. /*
4. * @保存方式:SharedPreference
5. * @注意:SharedPreference 只能在同一包内使用,不能在不同包之间使用!
6. * @操作模式: Context.MODE_PRIVATE:新内容覆盖原内容
7. *            Context.MODE_APPEND:新内容追加到原内容后
8. *            Context.MODE_WORLD_READABLE:允许其他应用程序读取
9. *            Context.MODE_WORLD_WRITEABLE:允许其他应用程序写入,会覆盖原数据。
10. */  
11.
12. package cn.android.preference;   
13.   
14. import android.app.Activity;   
15. import android.content.SharedPreferences;   
16. import android.content.SharedPreferences.Editor;   
17. import android.os.Bundle;   
18. import android.view.View;   
19. import android.widget.Button;   
20. import android.widget.EditText;   
21. import android.widget.Toast;   
22.   
23. /**
24. * SharedPreferences实现参数化的数据保存与读取
25. * @author Administrator
26. *
27. * 2010-6-30 下午02:35:44
28. */  
29. public class PreferenceActivity extends Activity {   
30.   
31.     //定义一个文本输入框,用于得到输入的name值   
32.     private EditText nameText;   
33.     //定义一个文本输入框,用于得到输入的age值   
34.     private EditText ageText;   
35.        
36.        
37.     @Override  
38.     public void onCreate(Bundle savedInstanceState) {   
39.         super.onCreate(savedInstanceState);   
40.          setContentView(R.layout.main);   
41.            
42.         //通过id得到id为name输入框   
43.          nameText = (EditText) findViewById(R.id.name);   
44.         //通过id得到id为age输入框   
45.          ageText = (EditText) findViewById(R.id.age);   
46.            
47.         //通过id得到保存按钮   
48.          Button saveButton = (Button) findViewById(R.id.save);   
49.         //通过id得到读取按钮   
50.          Button readButton = (Button) findViewById(R.id.read);   
51.            
52.         //为保存按钮添加事件   
53.          saveButton.setOnClickListener(new View.OnClickListener() {   
54.   
55.             @Override  
56.             public void onClick(View v) {   
57.                 //通过Activity自带的getSharedPreferences方法,得到SharedPreferences对象   
58.                 //第一个参数表示保存后 xml 文件的名称(底层实现是将数据保存到xml文档中)。   
59.                 //第二个参数表示xml文档的权限为私有,并且重新写的数据会覆盖掉原来的数据   
60.                  SharedPreferences preferences = getSharedPreferences("user", PreferenceActivity.MODE_WORLD_READABLE);   
61.                    
62.                 //通过preferences得到它的编辑器对象edit   
63.                  Editor edit = preferences.edit();   
64.                 //通过编辑器将name属性和对应的nameText中输入的值写入到xml文档中   
65.                  edit.putString("name", nameText.getText().toString());   
66.                 //通过编辑器将age属性和对应的ageText中输入的值写入到xml文档中   
67.                  String ageStr = ageText.getText().toString();   
68.                 if(ageStr != null || "".equals(ageStr.trim()))   
69.                      edit.putInt("age", new Integer(ageStr));   
70.                 //添加数据完成后,提交编辑器的添加操作   
71.                  edit.commit();   
72.                 //提示用户保存成功   
73.                  Toast.makeText(PreferenceActivity.this, R.string.save_success, Toast.LENGTH_LONG).show();   
74.              }   
75.                
76.          });   
77.            
78.         //为读取按钮添加时间   
79.          readButton.setOnClickListener(new View.OnClickListener() {   
80.   
81.             @Override  
82.             public void onClick(View v) {   
83.                 //通过Activity自带的getSharedPreferences方法,得到SharedPreferences对象   
84.                 //此时的第一个参数表示当前应用中的user.xml文件   
85.                 //如果只读的话,第二个参数没有什么意义,但方法参数需要,可以随便写   
86.                  SharedPreferences preferences = getSharedPreferences("user", PreferenceActivity.MODE_PRIVATE);   
87.                 //得到文件中的name标签值,第二个参数表示如果没有这个标签的话,返回的默认值   
88.                  String name = preferences.getString("name", "");   
89.                 //得到文件中的age标签值,第二个参数表示如果没有这个标签的话,返回的默认值   
90.                  Integer age = preferences.getInt("age", 0);   
91.                 //将读取的name值显示在文本编辑框nameText中   
92.                  nameText.setText(name);   
93.                 //将读取的age值显示在文本编辑框ageText中   
94.                  ageText.setText(age + "");   
95.                 //提示用户读取成功   
96.                  Toast.makeText(PreferenceActivity.this, R.string.read_success, Toast.LENGTH_LONG).show();   
97.              }   
98.                
99.          });   
100.      }   
101. }   
102.   
103.   
104. ------------------------------------------------------------------>   
105. 页面布局mian.xml文件:   
106. <?xml version="1.0" encoding="utf-8"?>   
107. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
108.      android:orientation="vertical"  
109.      android:layout_width="fill_parent"  
110.      android:layout_height="fill_parent">   
111.        
112.      <LinearLayout   
113.          android:orientation="horizontal"  
114.          android:layout_width="fill_parent"  
115.          android:layout_height="wrap_content">   
116.        
117.          <TextView     
118.              android:layout_width="wrap_content"   
119.              android:layout_height="wrap_content"   
120.              android:text="@string/name"/>   
121.                
122.          <EditText   
123.              android:layout_width="fill_parent"   
124.              android:layout_height="wrap_content"   
125.              android:id="@+id/name"   />   
126.       
127.      </LinearLayout>   
128.        
129.      <LinearLayout   
130.          android:orientation="horizontal"  
131.          android:layout_width="fill_parent"  
132.          android:layout_height="wrap_content">   
133.        
134.          <TextView     
135.              android:layout_width="wrap_content"   
136.              android:layout_height="wrap_content"   
137.              android:text="@string/age"/>   
138.                
139.          <EditText   
140.              android:layout_width="fill_parent"   
141.              android:layout_height="wrap_content"   
142.              android:id="@+id/age"    />   
143.       
144.      </LinearLayout>   
145.        
146.      <LinearLayout   
147.          android:orientation="horizontal"  
148.          android:layout_width="fill_parent"  
149.          android:layout_height="wrap_content">   
150.            
151.          <Button   
152.              android:layout_width="wrap_content"   
153.              android:layout_height="wrap_content"   
154.              android:text="@string/save"   
155.              android:id="@+id/save" />   
156.                
157.          <Button   
158.              android:layout_width="wrap_content"   
159.              android:layout_height="wrap_content"   
160.              android:text="@string/read"   
161.              android:id="@+id/read" />   
162.       
163.      </LinearLayout>   
164.        
165. </LinearLayout>  
分享到:
评论

相关推荐

    SharedPreferences存取list集合

    在Android开发中,SharedPreferences通常用于存储轻量级的数据,如用户偏好设置,这些数据通常是简单的键值对形式。然而,SharedPreferences并不直接支持存储复杂的数据结构,比如List集合。但通过一些技巧,我们...

    读写SharedPreferences中的数据

    在Android开发中,SharedPreferences是用于存储轻量级数据的一个重要工具。它主要用于保存应用程序的配置信息或者用户的一些简单设置,如开关状态、首选项等。这些数据以键值对的形式存在,支持基本数据类型,如布尔...

    Android中DataStore替代SharedPreferences

    【Android中的DataStore替代SharedPreferences】 Android开发者们长期以来一直依赖SharedPreferences作为轻量级的数据存储解决方案,它的简单易用性使其在小规模数据存储方面受到了广泛欢迎。然而,随着应用程序...

    SharedPreferences文件在不同应用之间数据共享

    SharedPreferences是Android系统提供的一种轻量级的数据存储方式,主要用于存储应用程序的简单配置信息,如布尔值、整型、浮点型、字符串等基本类型及其数组。通常,SharedPreferences数据是私有的,即每个应用只能...

    sharedpreferences

    **Android中的SharedPreferences** SharedPreferences是Android系统提供的一种轻量级的数据存储机制,主要用于应用程序保存简单的配置信息,如用户设置、应用状态等。它采用键值对(key-value pairs)的形式存储...

    Android SharedPreferences设置初始密码

    在Android开发中,SharedPreferences是一个轻量级的数据存储方式,常用于保存应用的配置信息或用户设置,如登录状态、主题颜色、用户偏好等。在这个场景中,我们将详细探讨如何使用SharedPreferences来设置和修改...

    android SharedPreferences小例子

    在Android开发中,SharedPreferences是一个轻量级的数据存储机制,用于保存和读取少量的基本数据类型,如字符串、整型、布尔值等。它非常适合用来存储应用程序的配置信息或用户偏好设置,因为这些数据通常不需要复杂...

    Android开发之数据存储的四种方式之SharedPreferences

    Android项目开发中使用的数据存储方式有:网络存储、sqlite存储、File存储和SharedPreferences存储,四种存储方式对应的Demo别人是NetworkDemo、SqliteDemo、FileDemo和SharedPreferencesDemo,根据应用的场景选择...

    Android通过SharedPreferences实现自动登录记住用户名和密码功能

    最近Android项目需要一个自动登录功能,完成之后,特总结一下,此功能依靠SharedPreferences进行实现。 SharedPreferences简介 SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value...

    使用SharedPreferences保存一些数据

    在Android应用开发中,SharedPreferences是Android提供的一种轻量级的数据存储方式,主要用于存储一些简单的配置信息,如用户偏好设置、应用程序的状态等。它是一个键值对的存储系统,支持基本数据类型,如布尔型、...

    android学习SharedPreferences的使用方法

    在Android开发中,SharedPreferences是一个轻量级的数据存储方式,用于保存应用中的小量、简单的数据,如用户设置、应用状态等。它提供了键值对(key-value pairs)的存储,支持基本数据类型如布尔型、整型、浮点型...

    SharedPreferences存储复杂的对象

    SharedPreferences是Android系统提供的一种轻量级的数据存储方式,主要用于存储应用程序中的简单配置数据,如布尔值、整型、浮点型、字符串等基本类型及其数组。然而,原生的SharedPreferences并不支持直接存储复杂...

    android的SharedPreferences用法举例源代码

    SharedPreferences是Android系统提供的一种轻量级的数据存储方式,主要用于存储应用程序中的配置信息或者简单的数据,如用户设置、应用状态等。它使用XML文件来持久化数据,并提供了方便的API供开发者进行读写操作。...

    android studio 利用SharedPreferences实现自动登录

    在Android应用开发中,SharedPreferences是Android提供的一种轻量级的数据存储方式,主要用于存储一些简单的配置信息,如用户设置、登录状态等。在这个“android studio 利用SharedPreferences实现自动登录”的主题...

    sharedpreferences存储多个用户

    在Android应用开发中,SharedPreferences是Android提供的一种轻量级的数据存储方式,主要用于存储一些简单的配置信息,如用户偏好设置、应用程序的状态等。标题"sharedpreferences存储多个用户"提示我们需要探讨如何...

    SharedPreferences设置用户参数

    在Android开发中,SharedPreferences是应用保存轻量级配置数据的常用工具。它提供了一种简单的方法来存储和读取键值对(key-value pairs),通常用于保存用户偏好设置或者简单的应用状态。这篇博客将深入探讨...

Global site tag (gtag.js) - Google Analytics