SharedPreferences类
android.content.SharedPreferences
类概括:
访问和修改由函数getSharedPreferences(String,int)返回的首选项的接口。对于任何特定的首选项集合,所有客户端共享此类的单个实例。
必须通过SharedPreferences.Editor对象修改属性的值,以确保属性值保持一致状态,当提交存储时,起到控制作用。从不同的get方法返回的对象必须被视为不可变。
注意:此类不再支持多线程。
嵌套类 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
interface | SharedPreferences.Editor | 用于修改SharedPreferences对象的接口 | |||||||||
interface | SharedPreferences.OnSharedPreferenceChangeListener | 此接口定义,当一个首选项属性发生改变,一个回调会被调用。 |
共有方法 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
abstract boolean |
contains(
String key)
核对是否属性集中包含属性。
| ||||||||||
abstract SharedPreferences.Editor |
edit()
为这些属性集创建一个新的Editor,通过这个Editor你可以把修改选项集中的数据,并且自动提交这些改变到SharedPreferences对象。 | ||||||||||
abstract Map< String, ?> |
getAll()
检索所有属性集中的值
| ||||||||||
abstract boolean |
getBoolean(
String key, boolean defValue)
检索属性集中的布尔值。
| ||||||||||
abstract float |
getFloat(
String key, float defValue)
检索属性集中的float值。
| ||||||||||
abstract int |
getInt(
String key, int defValue)
检索属性集中的int值。
| ||||||||||
abstract long |
getLong(
String key, long defValue)
检索属性集中的long值。
| ||||||||||
abstract String |
getString(
String key,
String defValue)
检索属性集中的string值。
| ||||||||||
abstract Set< String> |
getStringSet(
String key,
Set<
String> defValues)
检索属性集中的string集合值。
| ||||||||||
abstract void |
registerOnSharedPreferenceChangeListener(
SharedPreferences.OnSharedPreferenceChangeListener listener)
注册一个当属性值改变时调用的回调函数。 | ||||||||||
abstract void |
unregisterOnSharedPreferenceChangeListener(
SharedPreferences.OnSharedPreferenceChangeListener listener)
注销一个原先的回调函数。
|
使用共享的配置(Preferences)
SharedPreferences类提供了一个通用的框架,用于保存和检索以持久化的键值对形式存储的原始数据类型。你可以使用SharedPreferences保存任意类型的原始数据:布尔(boolean),浮点(float),整型(int),长整型(long)和字符串(string)。这些数据将会存放在用户会话中(即使你的应用程序已经退出)。
为了获得SharedPreferences对象,可以使用下面的两种方法中的一种:
- getSharedPreferences()方法,当需要多个由第一个参数指定名称属性文件;
- getPreferences()方法,如果Activity仅仅需要一个属性文件。因为可能Acitivity仅仅有一个属性文件,所以不需要名称区别。
写属性值:
- 调用
edit()
,取得SharedPreferences.Editor
; - 使用例如
putBoolean()
和putString()
方法添加值;
- 使用
commit()
函数提交新值。
读属性值,可以使用 SharedPreferences
类的方法,例如 getBoolean()
和 getString()
。
下面是一个使用无声的按键保存属性的例子:
public class Calc extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}
@Override
protected void onStop(){
super.onStop();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// Commit the edits!
editor.commit();
}
}