Android数据存储--SharedPreference
2016-08-09 本文已影响129人
MrMagicWang
Sharepreference是Android程序中常用的数据存储方式。其本质就是一个xml文件,用于存储少量的,一般是配置文件一类的数据,其特点是简单方便。
Sharepreference使用键值对保存私有基本数据。
创建SharedPreference
- 通过context.getSharedPreferences对象获取
SharedPreferences preferences = context.getSharedPreferences("com.example.test_preference", Context.MODE_PRIVATE);
//获取应用级别的preferences。
//第一个参数为SharedPreferences的xml的文件名,一般格式为<package_name>_preferences
//第二个参数为int mode, 一般用 0 或者 MODE_PRIVATE
- 直接在activity中使用
getPreferences()
方法:可以获取同一activity中的preference - 通过PreferenceManager的
getDefaultSharedPreferences(Context context)
方法获取
创建、修改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方法耗时越长。所以强烈建议把存储的数据分成小的对象。