欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2

程序员文章站 2022-05-15 20:51:21
...
  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. 获取手机可用空间
    2

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

  7. SherePreference (重要)
    2

  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();
}
相关标签: Android#学习