SharedPreferences
译者署名: madgoat
译者链接:http://madgoat.cn
翻译版本:Android 2.3 r1
结构
继承关系
public interface SharedPreferences
android.content.SharedPreferences
类概述
用于访问和修改getSharedPreferences(String, int)返回偏好设置数据(preference data)的一个接口。对于任何一组特殊的preferences,所有的客户端共享一个此类单独的实例。
修改Preferences必须通过一个SharedPreferences.Editor对象,以确保当他们提交存储数据的操作时,preference值保持一致的状态。
注意:当前此类不支持多线程访问。后续将添加。
(译者注:这里译为” 偏好设定”,类似于ini文件,用于保存应用程序的属性设置)
参见
getSharedPreferences(String, int)
内部类
interface SharedPreferences.Editor
用于修改SharedPreferences对象设定值的接口。
interface SharedPreferences.OnSharedPreferenceChangeListener
接口定义一个用于在偏好设定(shared preference)改变时调用的回调函数。
public class PreferencesDemo extends Activity {
/** Called when the activity is first created. */
// 取得活动的Preferences对象
@Override public void onCreate(Bundle savedInstanceState)
{ super.onCreate(savedInstanceState); setContentView(R.layout.main);
Context ctx = this; SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE);
// 存入数据 Editor editor = sp.edit(); editor.putString("STRING_KEY", "string");
editor.putInt("INT_KEY", 0); editor.putBoolean("BOOLEAN_KEY", true); editor.commit();
// 返回STRING_KEY的值 Log.d("SP", sp.getString("STRING_KEY", "none"));
// 如果NOT_EXIST不存在,则返回值为"none" Log.d("SP", sp.getString("NOT_EXIST", "none")); } }
这段代码执行过后,即在/data/data/com.test/shared_prefs目录下生成了一个SP.xml文件,一个应用可以创建多个这样的xml文件。如图所示:

公共方法
public abstract boolean contains (String key)
判断preferences是否包含一个preference。
参数
key 想要判断的preference的名称
返回值
如果preferences中存在preference,则返回true,否则返回false。
public abstract SharedPreferences.Editor edit ()
针对preferences创建一个新的Editor对象,通过它你可以修改preferences里的数据,并且原子化的将这些数据提交回SharedPreferences对象。(译者注:原子化——作为一个整体提交,原子性)
注意:如果你想要在SharedPreferences中实时显示,刚通过Editor对象进行的修改,那么你必须调用commit()方法。
返回值
返回一个SharedPreferences.Editor的新实例,允许你修改SharedPreferences对象里的值。
public abstract Map<String, ?> getAll ()
取得preferences里面的所有值
返回值
返回一个map,其中包含一列preferences中的键值对
异常
空指针异常(NullPointerException)
public abstract boolean getBoolean (String key, boolean defValue)
从preferences中获取一个boolean类型的值。
参数
key 获取的preference的名称
defValue 当此preference不存在时返回的默认值
返回值
如果preference存在,则返回preference的值,否则返回defValue。如果使用此名称的preference不是一个boolean类型,则抛出ClassCastException。
异常
ClassCastException
public abstract float getFloat (String key, float defValue)
从preferences中获取一个float类型的值。
参数
key 获取的preference的名称
defValue 当此preference不存在时返回的默认值
返回值
如果preference存在,则返回preference的值,否则返回defValue。如果使用此名称的preference不是一个float类型,则抛出ClassCastException。
异常
ClassCastException
public abstract int getInt (String key, int defValue)
从preferences中获取一个int类型的值。
参数
key 获取的preference的名称
defValue 当此preference不存在时返回的默认值
返回值
如果preference存在,则返回preference的值,否则返回defValue。如果使用此名称的preference不是一个int类型,则抛出ClassCastException。
异常
ClassCastException
public abstract long getLong (String key, long defValue)
从preferences中获取一个long类型的值。
参数
key 获取的preference的名称
defValue 当此preference不存在时返回的默认值
返回值
如果preference存在,则返回preference的值,否则返回defValue。如果使用此名称的preference不是一个long类型,则抛出ClassCastException。
异常
ClassCastException
public abstract String getString (String key, String defValue)
从preferences中获取一个String类型的值。
参数
key 获取的preference的名称
defValue 当此preference不存在时返回的默认值
返回值
如果preference存在,则返回preference的值,否则返回defValue。如果使用此名称的preference不是一个String类型,则抛出ClassCastException。
异常
ClassCastException
public abstract void registerOnSharedPreferenceChangeListener (SharedPreferences.OnSharedPreferenceChangeListener listener)
注册一个回调函数,当一个preference发生变化时调用。
参数
listener 将会被调用的回调函数
参见
unregisterOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener)
public abstract void unregisterOnSharedPreferenceChangeListener (SharedPreferences.OnSharedPreferenceChangeListener listener)
注销一个之前(注册)的回调函数
参数
listener 要被注销的回调函数
参见
registerOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener)
分享到:
相关推荐
6. **数据存储**:Android提供了多种数据存储方式,包括: - 文件存储:直接操作文件系统。 - SQLite数据库:本地关系型数据库,适用于大量结构化数据。 - SharedPreferences:轻量级键值对存储,适合少量配置...
【安卓(Android)期末课程设计-复习题库】 在安卓(Android)开发的学习过程中,期末课程设计是一个重要的实践环节,旨在检验学生对Android应用开发的理解和掌握程度。本复习题库是一个专门为学生准备的资源,它...
Android的数据持久化技术,如SharedPreferences、SQLite数据库、文件存储和ContentProvider,也在源码中占据一席之地。理解这些存储方式的优缺点及适用场景,对于数据管理至关重要。 源码还可能涉及网络请求和数据...
### Android复习大纲知识点详解 #### 一、移动开发简介 - **移动终端**: 掌握当前主流移动终端类型及其操作系统,如iOS、Android等。 - **Android系统**: 理解Android系统的起源和发展历程,包括其主要版本更新的...
SharedPreferences 用于存储简单的键值对数据,文件存储适用于大块文本或二进制数据,SQLite 数据库用于结构化数据的存储,ContentProvider 则作为数据交换的桥梁,让不同应用间能共享数据,而网络存储则利用云服务...
12. **Android数据存储方式**包括SQLite数据库、SharedPreferences、内部存储、外部存储以及ContentProvider。 13. **文件存储位置**,文件通常存储在应用的私有数据目录下。 14. **Android程序发布**,需要打包成...
3. **数据存储**:SQLite数据库、SharedPreferences、内部/外部存储等。 4. **网络编程**:使用HttpURLConnection、OkHttp或Retrofit进行网络请求,以及使用Gson或Jackson解析JSON数据。 5. **权限管理**:Android...
【Android Studio开发的单词本APP源码(期末大作业)】是一个基于Android Studio的移动应用项目,用于学习和复习英语单词。这个APP可能是学生在学习Android应用开发时完成的一个重要练习,展示了Android应用的基本...
1. **SharedPreferences**:适用于存储简单的键值对数据,数据以XML格式保存在设备上。这种方式只适用于同一应用内部的数据共享。 2. **文件存储**:可以通过内置的`openFileInput()`和`openFileOutput()`方法来...
10. **数据存储方式**:Android提供了多种数据存储方案,包括SharedPreferences、文件、SQLite数据库、ContentProvider以及网络存储,适应不同场景下的数据管理需求。 11. **Intent回调**:当一个Activity需要返回...
【Android课程设计——背单词软件】是一个典型的移动应用开发项目,展示了如何利用Android Studio这一强大的集成开发环境(IDE)来创建一个实用的教育类应用程序。这个项目的核心目标是帮助用户学习和记忆单词,可能...
6. **数据存储**:Android提供了多种数据存储方式,包括SharedPreferences、SQLite数据库、文件系统和网络存储。书中会详细讲解每种方式的使用场景和操作方法。 7. **意图(Intent)**:意图是Android中实现组件间...
6. **数据存储**:Android提供了多种数据存储方式,包括 SharedPreferences(键值对存储)、内部存储(私有文件系统)、外部存储(公共文件系统)、SQLite数据库(结构化数据存储)以及ContentProvider(共享数据)...
7. **数据存储**:Android提供了SQLite数据库、SharedPreferences、ContentProvider等多种数据存储方式,开发者应根据需求选择合适的方法。 8. **服务**:Service组件可以在后台长时间运行,用于执行不与用户交互的...
5. **数据存储**:可以使用SQLite数据库存储结构化数据,SharedPreferences存储轻量级偏好设置,或者使用File I/O操作本地文件。 **Android权限管理** Android有严格的权限管理系统,应用程序在安装时或运行时需要...
在Android平台上开发自创的背单词程序是一种创新且实用的方式,可以帮助用户有效地学习和记忆词汇。这个程序提供了增加、查找和查询等基本功能,旨在增强用户的词汇学习体验。以下是对这些核心功能的详细解释和相关...
数据存储方面,Android提供了多种方式,如SQLite数据库、SharedPreferences、文件系统等。此单词记忆程序可能使用SQLite存储单词库,每个单词及其相关信息(如例句、音标)构成一个数据库记录。`SQLiteOpenHelper`类...
4. 数据存储:SQLite数据库、SharedPreferences、文件存储以及ContentProvider的使用。 5. Service和BroadcastReceiver:后台服务的实现和广播接收器的使用,用于处理不需要用户交互的长时间任务。 6. 网络编程:...
### 面试总结:Android开发关键知识点解析 #### Android面试常见问题概览 在进行Android开发相关的面试准备时,通常会遇到一系列的核心技术问题。本文将基于标题、描述及部分给定内容,对Android面试中常见的几个...