在android系统数据存储有五种方式:文件,内容提供者,数据库(SQLite),SharedPreferences,网络(这种方式很容易被忽视)。//这是一道常见面试题
接下来就详细怎么使用SharedPreferences吧
1. 什么是SharedPreferences
以下面的xml文件的方式存在的键值对(key-value):
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<boolean name="silentMode" value="true" />
<boolean name="bbb" value="false" />
</map>
来段SDK中的原文:
Interface for accessing and modifying preference data returned by getSharedPreferences(String, int)
. For any particular set of preferences, there is a single instance of this class that all clients share. Modifications to the preferences must go through an SharedPreferences.Editor
object to ensure the preference values remain in a consistent state and control when they are committed to storage.
主要是第一句话:是一个接口类主要负责读取和修改应用程序的Preferences数据。
***在实际的工作中往往是最基本的东西最容易出问题,这个类是什么使用时需要注意什么,上面这段话是应该多读的,而且要完全吸收转化为自己的东西***
2. Preferences有是什么
是PreferenceActivity中的基本UI构造元素,有下面几种类型:
参数 | 含义 |
PreferenceScreen | 根元素 |
PreferenceCategory | 参数组 |
CheckBoxPreference | 复选框参数 |
EditTextPreference | 文本框参数 |
ListPreference | 列表框参数 |
Preference | 仅供显示的参数 |
RingtonePreference | 系统铃声选择 |
3. 应用程序中如何使用呢
public class HelloPreferences extends Activity {
public static final String PREFS_NAME = "HelloPreferences";
...
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
...
// 获取preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}
@Override
protected void onStop(){
super.onStop();
// 需要SharedPreferences.Editor对象来提交修改后的数据
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
// 千万不要忘记提交!!!
editor.commit();
}
}