Android数据存储--SharedPreference

2016-08-09  本文已影响129人  MrMagicWang

Sharepreference是Android程序中常用的数据存储方式。其本质就是一个xml文件,用于存储少量的,一般是配置文件一类的数据,其特点是简单方便。

Sharepreference使用键值对保存私有基本数据。

创建SharedPreference

SharedPreferences preferences =  context.getSharedPreferences("com.example.test_preference", Context.MODE_PRIVATE);
//获取应用级别的preferences。
//第一个参数为SharedPreferences的xml的文件名,一般格式为<package_name>_preferences
//第二个参数为int mode, 一般用 0 或者 MODE_PRIVATE

创建、修改SharedPreferences值
SharedPreferences.Editor是用来修改SharedPreferences对象值的接口。在editor 做出的修改都是待处理的,并没有被保存到SharedPreferences里。当调用commit()或apply()方法修改才会被保存。

commit()方法可以同步保存数据。
apply()方法为异步保存数据。

//获取Editor
SharedPreferences.Editor editor = sharedPreferences.edit();

//添加或修改值
editor.putDataType("key", val);

//删除单个数据值
editor.remove("key");

//清除所有数据值
editor.clear();

//保存修改
editor.commit();
editor.apply();

获取数据
SharedPreferences是单例对象,只在第一次调用getSharedPreferences方法打开文件时,创建一个实例对象。

SharedPreferences first= context.getSharedPreferences("com.example.test_preference", Context.MODE_PRIVATE);
SharedPreferences second= context.getSharedPreferences("com.example.test_preference", Context.MODE_PRIVATE);
first.edit().putInt(”key”,10).commit();
int firstValue = first.getInt(”key”,0));  // firstValue = 15
int secondValue = second.getInt(”key”,0));  // secondValue = 15

当第一次调用get方法时,它解析对象并把放入map中,第二次获取数据直接从map 中获取,不需再解析。

first.getString(”key”,null)
// call time = 147 milliseconds
 
first.getString(”key”,null)
// call time = 0 milliseconds
 
second.getString(”key”,null)
// call time = 0 milliseconds

Preference的数据越大,get、commit、apply、remove和clear方法耗时越长。所以强烈建议把存储的数据分成小的对象。

上一篇下一篇

猜你喜欢

热点阅读