02安卓学习笔记(二)

目录

[1].测试的相关概念
[2].单元测试(掌握)
[3].日志猫的使用
[4].login登录案例
[5].使用上下文获取常见目录
[6].登录数据存储到sd卡(掌握)
[7].获取sd卡可用空间(掌握)
[8].文件权限的介绍
[9].SharedPreferences介绍(掌握)
[10].xml的序列化(掌握)
[11].xml的解析(掌握)

1.测试的相关概念

好的软件不是开发出来的,是不断测试出来的
安卓的压力测试:
    打开模拟器
    进入终端
    adb shell //进入手机终端
    monkey //查看monkey指令
    monkey 2000 //对手机终端里的每个应用都狂点2000次
1.1根据是否知道源代码分 黑盒 测试 和 白盒 测试
    黑盒:不知道源代码,只针对功能测试
    白盒:知道源代码,自己写测试代码测试
1.2根据测试的粒度
    方法测试:针对代码中的某一方法进行测试
    单元测试:
    集成测试:客户端和服务器联调进行测试
    系统测试:对整体的系统进行测试
1.3根据测试的暴力程度
    压力测试:重复点击N次、N个用户集中访问
    冒烟测试:压力测试的一种,一直测试到设备冒烟

2.单元测试

[1]在清单文件中进行如下配置
    在application中配置测试的函数库:
        
    在与application同级处配置测试设备的主类和目标包:
         
[2]定义一个class写一个方法:
    //定义一个计算器相加的方法*/
    public int add(int x,int y) {
        return x+y;
    }
[3]定义一个类继承自AndroidTestCase的类
    //写测试方法
    public void testAdd() {
        Calc calc = new Calc();
        int result = calc.add(7, 2);
        //断言 (期望的正确值,实际的结果值)
        assertEquals(8, result);
    }
[4]右键testAdd方法 Run As到Android JUnit Test

3.日志猫LogCat的使用

Logcat有五个级别;tag是个标识,一般使用类名,方便找到打印信息
    Log.v(tag, "我是verbose级别日志");//蓝色
    Log.i(tag, "我是info级别日志"); //绿色
    Log.d(tag, "我是debug级别日志");//黑色
    Log.w(tag, "我是warn级别日志");//黄色
    Log.e(tag, "我是error级别日志");//红色
可以在添加日志过滤器找到自己需要的日志内容;一般红色代表错误,黄色代表警告;这两个就可以调试出错误

4.login登录案例

复选框
保存用户名和密码到本地
从本地读取用户名和密码

5.使用Context上下文获取常见目录

//上下文 
Context context
//会在data/data/应用的包内生成一个file文件夹
String path = context.getFilesDir().getPath();
//在file文件夹下创建一个info.txt文件
File file = new File(path,"info.txt");
上下文调用的实际参数:MainActivity.this
利用上下文可以获取很多的方法,
context.getFilesDir()创建一个file文件夹
context.getResources()拿到资源目录下的资源文件

6.登录数据存储到sd卡

往sd卡中写数据需要配置权限:android.permission.WRITE_EXTERNAL_STORAGE
String sdPath = Environment.getExternalStorageDirectory().getPath();//获取sdcard的路径
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {//把数据保存到sd卡,需要先判断sd卡是否可用--可用
}

7.获取sd卡可用空间

//获取sd卡的 总空间和可用空间
File file = Environment.getExternalStorageDirectory();
long totalSpace =  file.getTotalSpace(); //总空间:字节
long usableSpace = file.getUsableSpace(); //可用空间:字节
//空间大小转换为MB
String totalStr = Formatter.formatFileSize(this, totalSpace);
String usableString = Formatter.formatFileSize(this, usableSpace);

8.文件权限的介绍

在Linex下用十位表示文件的权限,安卓继承了这点,如果转成二进制,有权限用1表示、-用0表示
d rwx rwx rwx
第1位:表示文件的类型(d代表目录、-代表文件)
第2-4位:表示当前用户(r可读、w可写、x可执行、-没有权限),每一位都用二进制表示,即000-111,十进制为0-7
第5-7位:表示当前用户所在的组(r可读、w可写、x可执行、-没有权限),每一位都用二进制表示,即000-111,十进制为0-7
第8-10位:表示其他用户(r可读、w可写、x可执行、-没有权限),每一位都用二进制表示,即000-111,十进制为0-7
-rw-rw--w-:这是一个文件、对当前用户可读写不可执行、对当前用户所在的组可读写不可执行、对其他用户可写不可读不可执行
在终端中,可以用chmod指令修改文件权限,方法为:
    adb shell  //进入手机终端
        cd data/data/应用包名/files //进入file文件夹下
        chmod 777 private.txt //将private.txt文件权限修改为777(111 111 111)(每一段用一个十进制)
        chmod 660 private.tex //即 110 110 000,表示当前用户可读写、当前用户所在的组可读写、其他用户无任何权限
//创建文件
try {
    //创建文件输出流:文件名、文件权限类型(MODE_PRIVATE私有文件、MODE_APPEND可追加文件、MODE_WORLD_READABLE可读文件、MODE_WORLD_WRITEABLE可读写文件)
    FileOutputStream fos = openFileOutput("private.txt", MODE_PRIVATE);
    //在文件中写入数据
    fos.write("111111111".getBytes());
    fos.close();//关闭流
} catch (Exception e) {
        e.printStackTrace();
}
//读取其他应用(com.biyu6.fileauthority)的本地文件
    File file = new File("/data/data/com.biyu6.fileauthority/files/write.txt");
    FileInputStream fis = new FileInputStream(file);
    BufferedReader bufr = new BufferedReader(new InputStreamReader(fis));
    String content = bufr.readLine();
    System.out.println("读取的内容:"+content);

9.SharedPreferences介绍(偏好设置)

/**将用户名和密码保存到偏好设置中(SharedPreferences)
    name 会生成一个xml文件
    ode 四种模式(0私有、可读、可写...)*/
SharedPreferences sp = getSharedPreferences("config", 0);
//获取偏好设置的编辑器
SharedPreferences.Editor edit = sp.edit();
//存数据:int long bool string
edit.putString("name", nameStr);
edit.putString("pwd", passwordStr);
//点击提交编辑器
edit.commit();
//根据key找值,找不到返回一个默认值
String name = sp.getString("name", "");
String pwd = sp.getString("pwd", "");
//赋值给控件
et_name.setText(name);
et_password.setText(pwd);

10.xml的序列化(自己生成一个xml文件)

[1]通过StringBuffer 拼接字符串的方式自己组拼,最后将字符串存入一个自己定义的文件中(.xml)(不推荐)
[2]通过XmlSerializer类生成xml文件
    1.获取XmlSerializer实例
        获取XmlSerializer serializer = Xml.newSerializer();
    2.设置XmlSerializer序列化器参数
        File file = new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup2.xml");
        FileOutputStream fos = new FileOutputStream(file);
        serializer.setOutput(fos,"utf-8");
    3.写文档开头
        serializer.startDocument("utf-8", true);//文档的编码格式
        serializer.endDocument();//写文档的结尾(写一个开头就写一个结尾,不会出错)
    4.写节点(根节点、节点)
        serializer.startTag(null, "smss");//smss开始
        serializer.endTag(null, "smss");//smss结尾
    5.关闭流
        fos.close();

11.xml的解析

xml的数据来源于后台返回的数据,前台只需要解析数据
后台是以流的形式返回的数据
解析步骤:
    1.获取XmlPullParser
        XmlPullParser parser = Xml.newPullParser();
    2.设置XmlPullParser的参数        
        parser.setInput(inps,"utf-8");
    3.获取解析文档的事件类型
        int type = parser.getEventType(); 
    4.具体判断解析的是哪个标签
        XmlPullParser.START_TAG://解析到了开始标签
        解析各节点
        XmlPullParser.END_TAG://解析到了结束标签

你可能感兴趣的:(02安卓学习笔记(二))