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>
发表评论
-
startActivityForResult 简介
2011-03-29 15:55 1284依次打开Activity A1--A2--A3--A4 这时 ... -
startActivityForResult
2011-03-29 15:49 1146startActivityForResult 方法-- ... -
史上最全的Android的Tab与TabHost讲解
2011-03-28 11:22 1591Tab与TabHost 这就是Tab,而盛放Tab的 ... -
Android对话框
2011-03-25 11:21 1125Android 对话框(Dialog)大全 ... -
PreferenceActivity详解
2011-03-25 11:15 1442为了引入这个概率 首先从需求说起 即:现有某Activity专 ... -
TCP/UDP/HTTP
2011-03-25 11:09 1125先来一个讲TCP、UDP和HTTP ... -
9png
2011-03-25 11:08 1914今天学习了用9png图来优化横屏竖屏的UI,使用sdk自带的工 ... -
Notification
2011-03-25 11:07 939Android系统的状态栏(Status Bar)中有一个创新 ... -
一些技巧
2011-03-25 11:03 7871:查看是否有存储卡插入 String status=Envi ... -
布局像素单位
2011-03-25 11:03 827Android的layout文件中有时候可能会指定具体的单位, ... -
使用ActivityGroup来切换Activity和Layout
2011-03-25 11:02 1135在一个主界面中做Activity切换一般都会用TabActiv ... -
activitygroup
2011-03-25 11:01 1730说说tabhost和activitygroup 最近 ... -
线程
2011-03-25 11:01 1014今天在论坛上看到一些关于线程的帖子,我觉得与我理解的有些差异, ... -
类级框架
2011-03-25 11:00 744类集框架:Collection,Map,Iterator,En ... -
Intent打电话
2011-03-25 11:00 1217intent英文意思是意图,pending表示即将发生或来临的 ... -
Intent Uri
2011-03-25 10:59 1068进入联系人页面 1.Intent intent = new I ... -
Service
2011-03-25 10:59 940一、Service的概念 Service是Android程序中 ... -
Broadcast Receiver
2011-03-25 10:56 1948一、Broadcast Receiver简介 Android中 ... -
ContentProvider MIME类型
2011-03-25 10:55 1238Android程序的主要4部分 ... -
ContentProvider-1查询
2011-03-25 10:55 1237今天看了android的官方文档中ContentProvide ...
相关推荐
在Android开发中,SharedPreferences通常用于存储轻量级的数据,如用户偏好设置,这些数据通常是简单的键值对形式。然而,SharedPreferences并不直接支持存储复杂的数据结构,比如List集合。但通过一些技巧,我们...
在Android开发中,SharedPreferences是用于存储轻量级数据的一个重要工具。它主要用于保存应用程序的配置信息或者用户的一些简单设置,如开关状态、首选项等。这些数据以键值对的形式存在,支持基本数据类型,如布尔...
【Android中的DataStore替代SharedPreferences】 Android开发者们长期以来一直依赖SharedPreferences作为轻量级的数据存储解决方案,它的简单易用性使其在小规模数据存储方面受到了广泛欢迎。然而,随着应用程序...
SharedPreferences是Android系统提供的一种轻量级的数据存储方式,主要用于存储应用程序的简单配置信息,如布尔值、整型、浮点型、字符串等基本类型及其数组。通常,SharedPreferences数据是私有的,即每个应用只能...
**Android中的SharedPreferences** SharedPreferences是Android系统提供的一种轻量级的数据存储机制,主要用于应用程序保存简单的配置信息,如用户设置、应用状态等。它采用键值对(key-value pairs)的形式存储...
在Android开发中,SharedPreferences是一个轻量级的数据存储方式,常用于保存应用的配置信息或用户设置,如登录状态、主题颜色、用户偏好等。在这个场景中,我们将详细探讨如何使用SharedPreferences来设置和修改...
在Android开发中,SharedPreferences是一个轻量级的数据存储机制,用于保存和读取少量的基本数据类型,如字符串、整型、布尔值等。它非常适合用来存储应用程序的配置信息或用户偏好设置,因为这些数据通常不需要复杂...
Android项目开发中使用的数据存储方式有:网络存储、sqlite存储、File存储和SharedPreferences存储,四种存储方式对应的Demo别人是NetworkDemo、SqliteDemo、FileDemo和SharedPreferencesDemo,根据应用的场景选择...
最近Android项目需要一个自动登录功能,完成之后,特总结一下,此功能依靠SharedPreferences进行实现。 SharedPreferences简介 SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value...
在Android应用开发中,SharedPreferences是Android提供的一种轻量级的数据存储方式,主要用于存储一些简单的配置信息,如用户偏好设置、应用程序的状态等。它是一个键值对的存储系统,支持基本数据类型,如布尔型、...
在Android开发中,SharedPreferences是一个轻量级的数据存储方式,用于保存应用中的小量、简单的数据,如用户设置、应用状态等。它提供了键值对(key-value pairs)的存储,支持基本数据类型如布尔型、整型、浮点型...
SharedPreferences是Android系统提供的一种轻量级的数据存储方式,主要用于存储应用程序中的简单配置数据,如布尔值、整型、浮点型、字符串等基本类型及其数组。然而,原生的SharedPreferences并不支持直接存储复杂...
SharedPreferences是Android系统提供的一种轻量级的数据存储方式,主要用于存储应用程序中的配置信息或者简单的数据,如用户设置、应用状态等。它使用XML文件来持久化数据,并提供了方便的API供开发者进行读写操作。...
在Android应用开发中,SharedPreferences是Android提供的一种轻量级的数据存储方式,主要用于存储一些简单的配置信息,如用户设置、登录状态等。在这个“android studio 利用SharedPreferences实现自动登录”的主题...
在Android应用开发中,SharedPreferences是Android提供的一种轻量级的数据存储方式,主要用于存储一些简单的配置信息,如用户偏好设置、应用程序的状态等。标题"sharedpreferences存储多个用户"提示我们需要探讨如何...
在Android开发中,SharedPreferences是应用保存轻量级配置数据的常用工具。它提供了一种简单的方法来存储和读取键值对(key-value pairs),通常用于保存用户偏好设置或者简单的应用状态。这篇博客将深入探讨...