##Android中的数据存储和读取 存储数据到文件中、从文件中读取数据显示在界面上
###1 软件测试的概念
-
按照是否知道源代码
- 白盒测试:知道源代码,写代码去测试逻辑
- 黑盒测试:不知源代码,根据需求测试软件的功能
-
按照测试的粒度
- 方法测试:测试某个方法
- 单元测试:测试一个代码块
- 功能测试:根据需求测试软件的某个功能
-
按照测试的暴力程度
- 压力测试
- 冒烟测试:monkey
###2 Android下编写单元测试代码的步骤
-
测试类 extends AndroidTestCase
-
测试方法
- 必须是public
- 给android测试框架抛出异常
-
要对测试方法断言
-
在manifest节点写:
<instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="cn.itcast.junit" ></instrumentation>
在application节点写:
<uses-library android:name="android.test.runner"/>
-
右键部署程序运行单元测试
- 绿条代表通过
- 红条代表失败,方法有问题
###3 日志等级的划分 分为5个等级:
V: verbose 提醒 黑色 Log.v();
D: debug 调试 蓝色 Log.d();
I: info 信息 绿色 Log.i();
W: warn 警告 橘黄 Log.w();
E: error 错误 红色 Log.e();
###4 什么是上下文 Context 全局的环境对象,方便的api,可以去获取整个应用程序的数据
RAM:运行内存,相当于电脑的内存
ROM:内部存储,相当于电脑的硬盘,可以持久化存储数据
SD卡:外部存储
##5 内部存储(重要) 文件存储路径: /data/data/包名
文件只能存储在自己应用程序私有的文件夹下,别的应用程序无法访问
-
this.getFilesDir() == /data/data/包名/files/
清除数据,弹出对话框提示,会清除所有的数据
-
this.getCacheDir() == /data/data/包名/cache/
清除缓存,没有对话框提示,只清除cache目录里面的数据,当系统内存严重不足时,系统会自动清除cache目录里面的文件 应用场景:存储临时的文件
-
输入流 this.openFileInput("config.txt");
-
输出流 this.openFileOutput("config.txt", 0);
##6 外部存储SD卡(重要) 记得添加权限,检查外部存储设备的状态和可用空间
###7 SD卡的路径、状态、可用空间大小
-
SD卡的路径: Environment.getExternalStorageDirectory()
-
SD卡的状态: Environment.getExternalStorageState()
-
SD卡的可用空间
File file = Environment.getExternalStorageDirectory(); long size = file.getFreeSpace();//byte String num = Formatter.formatFileSize(this, size);
##8 SharedPreference存储数据(重要) 文件存储路径: /data/data/包名/shared_prefs/
-
初始化 SharedPreferences mPreferences = this.getSharedPreferences("info", 0);
-
拿到 Editor编辑器 Editor editor = mPreferences.edit();
-
存储数据 editor.putString("qq", qq);
-
提交,重要 editor.commit();
应用场景:存储配置信息,账号密码
##9 Android下文件访问的权限 原理:底层是通过Linux操作系统的文件模式来实现的。
默认情况下,所有的文件创建出来都是私有的。只有自己的应用程序可以访问里面的数据,别的应用程序是不可以访问数据的。
###10 为什么要用xml文件
- 用元素描述数据
- 跨平台
###11 生成xml文件的步骤(重要)
-
初始化xml序列器
XmlSerializer serializer = Xml.newSerializer();
-
设置参数
FileOutputStream os = this.openFileOutput("student.xml", 0) serializer.setOutput(os, "utf-8");
-
往xml文件里面写数据
serializer.startDocument("utf-8", true);
###12 解析xml文件的方式
- sax 基于事件
- dom&dom4j 把xml加载到内存
- pull解析(类似于sax但是效率更高,内存开销更小)
###13 解析xml文件(重要)
- 初始化xml解析器 XmlPullParser parser = Xml.newPullParser();
- 设置解析器的参数 输入流 parser.setInput(is, "utf-8");
- 解析数据