2

  1. 测试的相关概念
    a) 好的软件不是开发出来的,是不断测试出来的
    b) 当当,1、2、3、-8;京东,手机卡
    c) 根据是否知道源代码:黑盒(根据功能测试)、白盒(知道源代码,自己写测试代码)
    d) 根据测试的粒度:方法测试;单元测试;集成测试;系统测试(安卓里不多)
    e) 根据测试的暴力程度:压力测试(12306,人多的时候卡);冒烟(一直测试应用到冒烟为止??!)
    f) 压力测试adb指令:adb shell->monkey->monkey + 数量

  2. 单元测试(测试业务方法)
    a) 定义一个类继承AndroidTestCase
    b) 在清单文件中配置:uses-library 和 instrumentation
    c) 如果忘记了怎么配置,在eclipse中新建工程,Android test project

  3. 日志猫的使用:log类
    a) 报错先看error 然后式 warn
    b) Log.v(tag,“我是v级别”);----黑
    c) Log.i(tag,“我是i级别”);----黑
    d) Log.d(tag,“我是d级别”);----黑
    e) Log.w(tag,“我是w级别”);----深蓝
    f) Log.e(tag,“我是e级别”);----红

  4. Login登录案例:3_login
    a) 使用上下问获取常用目录context.getFilesDir().getPath();(获取的是data/data下的file文件夹)
    b) 直接获取输出流context.openFileInput();

  5. 获取手机可用空间
    在这里插入图片描述

  6. 文件权限介绍(共10位)
    a) 第一位(文件类型):d(目录)、-(普通文件)。
    b) 后三位(表示当前用户):r(可读)、w(可写)、x(可执行)、-(没有权限)。
    c) 后三位(表示当前用户所在的组):r(可读)、w(可写)、x(可执行)、-(没有权限)
    d) 后三位(其他用户):r(可读)、w(可写)、x(可执行)、-(没有权限)
    e) 有权限用1表示,没有用0表示。
    f) 修改文件权限(Linux)chmod 777
    在这里插入图片描述

  7. SherePreference (重要)
    在这里插入图片描述

  8. xml 序列化
    a) Stringbuffer 自己组拼

public void onclick(View v) {
	//<0.0>初始化数据
    List<Sms> smsList = new ArrayList<Sms>();
    for (int i = 0; i < 10; i++) {
            Sms sms = new Sms();
            sms.setAddress("10008" +
                    i);
            sms.setBody("nihao" +
                    i);
            sms.setData("201" +
                    i);
            //<0.1>把sms对象加到集合中
            smsList.add(sms);
     }
    //<1>创建sb对象
    StringBuffer sb = new StringBuffer();
    //<2>组拼xml文件头
    sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
    //<3>开始组拼根节点
    sb.append("<smss>");
    for (Sms sms : smsList) {
        sb.append("<sms>");
        //<>组拼address节点
        sb.append("<address>");
        sb.append(sms.getAddress());
        sb.append("</address>");
        //<>组拼body节点
        sb.append("<body>");
        sb.append(sms.getBody());
        sb.append("</body>");
        //<>组拼body节点
        sb.append("<data>");
        sb.append(sms.getData());
        sb.append("</data>");
        sb.append("</sms>");
    }
    sb.append("</smss>");
    //<4>把数据保存
    try {
        FileOutputStream fos = openFileOutput("data.xml",0);
        fos.write(sb.toString().getBytes());
        fos.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
  1. 使用XmlSerializer序序列化器 生成xml 的步骤
    a) 获取XmlSerializer 实例
    b) 设置XmlSerializer 序列化序列
    c) 写xml 文档开头
    d) 写根节点
    e) 循环写其他节点
	//XmlSerializer   点击生成xml文档
    public void onclick(View v){

		//<0.0>初始化数据
    	List<Sms> smsList = new ArrayList<Sms>();
    	for (int i = 0; i < 10; i++) {
            Sms sms = new Sms();
            sms.setAddress("10008" +
                    i);
            sms.setBody("nihao" +
                    i);
            sms.setData("201" +
                    i);
            //<0.1>把sms对象加到集合中
            smsList.add(sms);
     	}

        //<1>获取xmlseriallier类的实例,通过Xml这个工具类去获取
        XmlSerializer xmlSerializer = Xml.newSerializer();
        //<2>设置XmlSerializer序列化器参数
        try {
            FileOutputStream fos = openFileOutput("data.xml", 0);
            xmlSerializer.setOutput(fos,"utf-8");
            //<3>写xml文档开头
            xmlSerializer.startDocument("utf-8",true);
            //<4>写xml的根节点
            xmlSerializer.startTag(null, "smss");

            //<5>循环写sms节点
            for (Sms sms : smsList) {
                xmlSerializer.startTag(null, "sms");

                //address
                xmlSerializer.startTag(null, "address");
                xmlSerializer.text(sms.getAddress());
                xmlSerializer.endTag(null, "address");

                //body
                xmlSerializer.startTag(null, "body");
                xmlSerializer.text(sms.getBody());
                xmlSerializer.endTag(null, "body");

                //data
                xmlSerializer.startTag(null, "data");
                xmlSerializer.text(sms.getData());
                xmlSerializer.endTag(null, "data");

                xmlSerializer.endTag(null, "sms");
            }

            xmlSerializer.endTag(null, "smss");


            //写文档结尾
            xmlSerializer.endDocument();
            fos.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
  1. Xml的解析
    a) 服务器以流的形式返回数据
    b)解析内容
<?xml version="1.0" encoding="UTF-8"?>
<weather>
	<channel id="1">
		<city>北京</city>
		<temp>25</temp>
		<wind>3</wind>
		<pm250>200</pm250>
	</channel>
	<channel id="2">
		<city>郑州</city>
		<temp>20</temp>
		<wind>4</wind>
		<pm250>300</pm250>
	</channel>
	<channel id="3">
		<city>长春</city>
		<temp>10</temp>
		<wind>4</wind>
		<pm250>100</pm250>
	</channel>
	<channel id="4">
		<city>沈阳</city>
		<temp>10</temp>
		<wind>1</wind>
		<pm250>5</pm250>
	</channel>
</weather>

代码

//<0>生命一个集合对象
List<Channel> weatherLists = null;
Channel channel = null;
//<1>获取XmlPullParser解析的实例
XmlPullParser xpp = Xml.newPullParser();//基于事件解析,一行一行解析

//<2>设置XmlPullParer
xpp.setInput(in, "utf-8");

//<3>获取事件的类型
int type = xpp.getEventType();
while (type != XmlPullParser.END_DOCUMENT) {
    //<4>具体判断解析到哪个节点
    switch (type) {
        case XmlPullParser.START_TAG://解析开始标签
            //<4>具体判断到哪个标签
            if ("weather".equals(xpp.getName())) {
                //<5>创建一个集合对象
                weatherLists = new ArrayList<Channel>();
            } else if ("channel".equals(xpp.getName())) {
                //<6>创建javabean对象
                channel = new Channel();
                //<7>获取id值
                String id = xpp.getAttributeValue(0);
                channel.setId(id);
            } else if ("city".equals(xpp.getName())) {
                String city = xpp.nextText();
                channel.setCity(city);
            }else if ("temp".equals(xpp.getName())) {
                String temp = xpp.nextText();
                channel.setTemp(temp);
            }else if ("wind".equals(xpp.getName())) {
                String wind = xpp.nextText();
                channel.setWind(wind);
            }else if ("pm250".equals(xpp.getName())) {
                String pm250 = xpp.nextText();
                channel.setPm250(pm250);
            }
            break;
        case XmlPullParser.END_TAG://解析结束标签

            //判断一下要解析的结束标签
            if ("channel".equals(xpp.getName())) {
                // 把javabean存到集合中
                weatherLists.add(channel);
            }
            break;
    }
    //不停的向下解析
    type=xpp.next();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值