数据存储方案,详解持久化技术
持久化技术 文件存储 SharedPreferences存储 SQLite数据库存储
持久化技术: 将内存中的瞬时数据保存到存储设备中,其提供了一种机制让数据再瞬时状态与持久状态之间相互转换。
Android主要提供了三种方式:
- 文件存储:最基本的数据存储方式,不对存储数据进行任何格式化处理,适于存储简单文本数据或二进制数据。
- SharedPreference存储:Android平台上一个轻量级的存储类,保存一些常用的配置比如窗口状态,提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存。 。
- 数据库存储:Android上的SQLite是一款轻量级的关系型数据库,支持标准SQL语法,遵循数据库的ACID事物,功能强大方便。
文件存储:
通过Java中的IO操作来进行实现,Android在Context类中封装好J和读取了输入流和输出流的获取方法。
PS:创建的存储文件默认保存在/data/data//files文件夹下。
绝对路径:/data/data//files/filename。
Context:Context.getFilesDir()可以获取到”/data/data//files”
操作:
- 保存:通过Context.openFileOutput获取输出流,参数分别为文件名和存储模式。
- 读取:通过Context.openFileInput获取输入流,参数为文件名。
- 删除:Context.deleteFile删除指定的文件,参数为将要删除的文件的名称。
- 获取:通过Context.fileList获取files目录下的所有文件名数组。
存储模式:
- Context.MODE_PRIVATE :为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下写入的内容会覆盖原文件的内容。
- Context.MODE_APPEND: 检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
PS:可以用”+”来选择多种模式。
其他还有MODE_WORLD_READABLE 与MODE_WORLD_WRITEABLE分别代表可被其他应用读取与写入。由于不安全,在4.2被废弃。
SharedPreference存储:它分为多种权限,可以全局共享访问,本质是基于XML文件存储key-value键值对数据。haredPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。
需要先获取SharePreference对象,有3种方式:
Context类中的getSharedPreferences(name,mode) :
方法的第一个参数用于指定该文件的名称,名称不用带后缀,后缀会由Android自动加上;
方法的第二个参数指定文件的操作模式,共有四种操作模式。
四种操作模式分别为:- MODE_APPEND: 追加方式存储
- MODE_PRIVATE: 私有方式存储,其他应用无法访问
- MODE_WORLD_READABLE: 表示当前文件可以被其他应用读取
- MODE_WORLD_WRITEABLE: 表示当前文件可以被其他应用写入
Activity类中的getPreference(mode):
类似于Context中的方法,但是只接受一个模式为参数,默认当前Activity类名位文件名PreferencesManager类中的getDefaultSharePreference(context)方法:
静态方法,接受Context参数,自动使用当前程序的包名为文件名。
存储过程:
- 先通过edit()方法得到SharedPreference.Editor对象。
- 通过SharedPreference。Editor添加数据,使用其与数据类型相应的方法,如putBoolean(),putString()……
- 使用commit()方法将添加的数据提交,完成。
SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).editor();
editor.putString("name","Tom");
editor.getint("age",20);
.......
editor.commit();
读取过程:
通过对于相应的SharedPreference对象中提供的get()方法获取相应的数据。get()接受两个参数,一为存储时的键值,二为当找不到对应值时的默认返回值。
SharedPreference pref = getSharedPreference("datea",MODE_PRIVATE);
String name = pref.getStrign("name","");
int age = pref.getint("age",0);
........................
清除修改数据:
通过Editor实现:
SharedPreferences sp = getSharedPreferences("name", Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.clear();
editor.commit()
数据库:
正在学习SQL数据库…………