SharePreference
这个类可以用来保存一些应用程序要的配置或简单的数据,对于大量数据可能力有不逮,类似于WIN下面的ini文件。
数据会被保存在/data/data/PACKAGE_NAME /shared_prefs 。
对象的创建:
getSharedPreferences(String filename, int mode);
公共函数:
abstract boolean contains(String key) 检查文件中是否包含这个key
abstract SharedPreferences.Editor edit() 创建一个Editor对象,通过这个对象可以改变数据,注意的是数据被修改后需要使用函数commint()进行提交。
abstract Map<String, ?> getAll() 获取文件中所有的数据。
abstract boolean getBoolean(String key, boolean defValue) 获取一个boolean类型的数据,下面的几个函数非常类似。
abstract float getFloat(String key, float defValue)
abstract int getInt(String key, int defValue)
abstract long getLong(String key, long defValue)
abstract String getString(String key, String defValue)
abstract Set<String> getStringSet(String key, Set<String> defValues)
abstract void registerOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener) 注册一个回调函数,当preference被修改时调用。
abstract void unregisterOnSharedPreferenceChangeListener(SharedPreferences.OnSharedPreferenceChangeListener listener)
一个简单的例子:
SharedPreferences sh=getSharedPreferences("data", 0);
SharedPreferences.Editor editor=sh.edit();//会创建一个editor对象,要注意。
editor.putString("key1", "test1..");
editor.putString("key2", "test2..");
editor.commit();
System.out.println(sh.getString("key1", "null")+"---"+sh.getString("key2", "null"));
如果使用:
sh.edit().putString("key1", "test1..");
sh.edit().commit();
就会发现没有保存任何内容,为什么呢? 因为下面那个sh.edit().commit();实际上创建了一个新的edit并提交了,前面那个edit并没有提交,内容当然没有保存了