《第一行代码》数据存储全方案——详解持久化技术 的笔记
Android系统中实现数据持久化功能的3种方式
文件存储、SharedPreference存储以及数据库存储
SharedPreferences存储
SharedPreferences是使用键值对的方式来存储数据的。
将数据存储到SharedPreferences中
首先需要获得SharedPreferences对象。Android中主要提供了3种方法得到SharedPreferences对象
1.Context类中的getSharedPreferences()方法
接收两个参数
第一个参数用于指定SharedPreferences文件的名称,如果指定文件不存在则会创建一个,SharedPreferences文件都是存放在/data/data//shared_prefs/目录下的。
第二个参数用于指定操作模式,目前只有MODE_PRIVATE这一种模式可选。
只有当前的应用程序才可以对这个SharedPreferences文件进行读写。
2.Activity类中的getPreferences()方法
它只接收一个操作模式参数,会将当前活动的类名作为SharedPreferences的文件名。
3.PreferenceManager类的getDefaultSharedPreferences()方法
静态方法,它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。得到SharedPreferences对象后,就开始向SharedPreferences文件中存储数据了。
三步实现:
(1)调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象。
(2)向SharedPreferences.Editor对象中添加数据。
(3)调用apply()方法提交数据。
SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name","Tom");
editor.putInt("age",28);
editor.putBoolean("married",false);
editor.apply();
结合json使用,存储对象List
public static void saveBeanByFastJson(Context context, String key, Object obj) {
SharedPreferences sharedPreferences = context.getSharedPreferences(key,Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
String objString = JSON.toJSONString(obj);
Log.d(TAG, "saveBeanByFastJson: " + objString);
// fastjson的方法,需要导包的
editor.putString(key, objString).commit();
}
public static <T> List<T> getBeanByFastJson(Context context, String key, Class<T> clazz) {
String objString = context.getSharedPreferences(key,Context.MODE_PRIVATE).getString(key, "");
Log.d(TAG, "getBeanByFastJson: " + objString);
return JSON.parseArray(objString,clazz);
}
从SharedPreferences中读取数据
getBoolean(key,false); getInt getString等