数据存储之SharePreference

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并没有提交,内容当然没有保存了

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页