day02

1 测试的相关概念
    [1]好的软件不是开发出的  是不断测试出来的

1.1根据是否知道源代码
    黑盒:
    白盒:
1.2根据测试的粒度
    方法测试
    单元测试
    集成测试
    系统测试
1.3根据测试的暴力程度
    压力测试
    冒烟测试
    谷歌工程师给我们提供了一个monkey + 1000 指令可以进行压力测试


2 单元测试
    [1]定义一个类继承AndroidTestCase
    [2]在清单文件配置uses-library 和 instrumentation
  1. <instrumentation
  2. android:name="android.test.InstrumentationTestRunner"
  3. android:targetPackage="com.phone.unittest"/>
  1. <!-- 配置函数库 -->
  2. <uses-library android:name="android.test.runner"/>
    [3]如果ppt 搞丢了,可以自己手动创建一个Android的测试工程,在测试工程里面都会自动配置好



3 日志猫的使用
    
  1. Log.v(tag, "我是verbose级别"); ----蓝色
  2. Log.i(tag, "我是info级别");        -----绿色
  3. Log.d(tag, "我是debug级别");       -----黑色
  4. Log.w(tag, "我是warn级别");        -----黄色
  5. Log.e(tag, "我是error级别");       -----红色


4 login登录案例
    [1]画UI
    
 
    [2]根据我们画的UI写对应的业务逻辑
    
  1. //[2]写按钮的点击事件
  2. public void login(View v)
  3. {
  4. //[2.1]获取用户名和密码
  5. String name = et_name.getText().toString().trim();
  6. String pwd = et_userpassword.getText().toString().trim();
  7. //[2.2]判断name 和 pwd 是否为空
  8. if(TextUtils.isEmpty(name)||TextUtils.isEmpty(pwd))
  9. {
  10. Toast.makeText(MainActivity.this, "用户或密码不能为空", Toast.LENGTH_LONG).show();
  11. }
  12. else
  13. {
  14. //[2.3]进行登录的逻辑
  15. System.out.println("连接服务器进行登录等我们讲到第四天网络编程再说");
  16. if(cb_ischeck.isChecked())
  17. {
  18. //[2.3.1]把数据保存到SD卡需要先判断一下sd卡状态是否可用
  19. if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))
  20. {
  21. //Toast.makeText(MainActivity.this, "sd卡可用", Toast.LENGTH_LONG).show();
  22. //[2.4]把用户名和密码的数据存起来
  23. boolean result = UserInfoUtils.saveInfo(name, pwd);
  24. if(result)
  25. {
  26. Toast.makeText(MainActivity.this, "保存成功", Toast.LENGTH_LONG).show();
  27. }
  28. else
  29. {
  30. Toast.makeText(MainActivity.this, "保存失败", Toast.LENGTH_LONG).show();
  31. }
  32. }
  33. else
  34. {
  35. Toast.makeText(MainActivity.this, "sd卡不可用", Toast.LENGTH_LONG).show();
  36. }
  37. }
  38. else
  39. {
  40. Toast.makeText(MainActivity.this, "请勾选‘记住用户名密码’", Toast.LENGTH_LONG).show();
  41. }
  42. }
  43. }


5 使用上下文获取常见目录
    [1] String path = getFilesDir().getPath();
    [2] 使用上下文快速获取文件的输出流和输入流
  1. FileOutputStream fos = context.openFileOutput("info.txt", 0);
  1. FileInputStream fis = context.openFileInput("info.txt");


6 登录数据存储到sd卡
    [1]获取sd卡的目录
    
  1. String sdpath = Environment.getExternalStorageDirectory().getPath();
    [2]如何判断sd卡状态是否可用
  1. if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){}

7 获取sd卡可用空间
  1. //[1]找到我们关心的控件
  2. TextView tv_total_size = (TextView) findViewById(R.id.textView2);
  3. TextView tv_useable_size = (TextView) findViewById(R.id.textView1);
  4. //[2]获取sd卡总大小和可用空间
  5. File file = Environment.getExternalStorageDirectory();
  6. //总大小
  7. long totalSpace = file.getTotalSpace();
  8. //可用空间
  9. long usableSpace = file.getUsableSpace();
  10. //[3]转换数据格式
  11. String formatTotalSpace = Formatter.formatFileSize(this, totalSpace);
  12. String formatUseableSpace = Formatter.formatFileSize(this, usableSpace);
  13. //[4]展示到textview上
  14. tv_total_size.setText("总大小:" + formatTotalSpace);
  15. tv_useable_size.setText("可用的:" + formatUseableSpace);

8 文件权限的介绍

修改文件的权限 使用linux下一个指令(chmod) 

9 SharedPreferences介绍(☆)
    [1]获取sp的实例
  1. /**
  2. * name 会帮助我们生成一个xml文件
  3. * mode 模式
  4. */
  5. SharedPreferences sp = getSharedPreferences("config", 0);
    [2]获取编辑器
  1. Editor edit = sp.edit();
    [3]存数据
  1. edit.putString("name", name);
  2. edit.putString("pwd", pwd);
    [4]最后一定要commit
  1. edit.commit();

10 xml的序列化
    [1]StringBuffer 自己组拼
  1. //[1]创建sb对象
  2. StringBuffer sb = new StringBuffer();
  3. //[2]开始组拼xml文件头
  4. sb.append("<?xml version="1.0" encoding="utf-8"?>");
  5. //[3]开始组拼xml根节点
  6. sb.append("<smss>");
  7. //[4]开始组拼sms节点
  8. for(Sms sms : smsLists)
  9. {
  10. sb.append("<sms>");
  11. //[5]开始组拼address节点
  12. sb.append("<address>");
  13. sb.append(sms.getAddress());
  14. sb.append("</address>");
  15. //[6]开始组拼body节点
  16. sb.append("<body>");
  17. sb.append(sms.getBody());
  18. sb.append("</body>");
  19. //[7]开始组拼date节点
  20. sb.append("<date>");
  21. sb.append(sms.getDate());
  22. sb.append("</date>");
  23. sb.append("</sms>");
  24. }
  25. sb.append("</smss>");
  26. //[8]把数据保存到sd卡中
  27. try {
  28. File file = new File(Environment.getExternalStorageDirectory().getPath(), "smsbackup.xml");
  29. FileOutputStream fos = new FileOutputStream(file);
  30. fos.write(sb.toString().getBytes());
  31. fos.close();
  32. }
  33. catch (Exception e)
  34. {
  35. e.printStackTrace();
  36. }
    [2]使用xmlSerializer 序列化器
        <1>获取xmlSerializer 实例
  1. XmlSerializer serializer = Xml.newSerializer();
        <2>设置xmlSerializer 序列化参数
  1. File file = new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup2.xml");
  2. FileOutputStream fos = new FileOutputStream(file);
  3. serializer.setOutput(fos, "utf-8");
        <3>开始写xml的文档开头
  1. serializer.startDocument("utf-8", true);
        <4>写xml根节点
  1. serializer.startTag(null, "smss");
        <5>循环写其他结点
  1. for(Sms sms : smsLists)
  2. {
  3. //sms结点开头
  4. serializer.startTag(null, "sms");
  5. //[6]开始address节点
  6. serializer.startTag(null, "address");
  7. serializer.text(sms.getAddress());
  8. serializer.endTag(null, "address");
  9. //[7]开始body节点
  10. serializer.startTag(null, "body");
  11. serializer.text(sms.getBody());
  12. serializer.endTag(null, "body");
  13. //[8]开始date节点
  14. serializer.startTag(null, "date");
  15. serializer.text(sms.getDate());
  16. serializer.endTag(null, "date");
  17. //sms节点结束
  18. serializer.endTag(null, "sms");
  19. }
  20. serializer.endTag(null, "smss");
  21. //文档的结尾
  22. serializer.endDocument();



11 xml的解析
    [1]xml的数据来源  来源于服务器  服务器的开发人员通过服务器的技术把数据准备一个xml返回给客户端
    [2]对应Android的开发人员  需要做解析的操作  把我们关心的数据取出来就可以了
    [3]服务器是以流的形式把数据返回

解析步骤
    [1]获取XmlPullParser的实例
  1. XmlPullParser parser = Xml.newPullParser();
    [2]设置XmlPullParser的参数
  1. parser.setInput(in,"utf-8");
    [3]获取解析的文档的事件类型
  1. int eventType = parser.getEventType();
    [4]具体判断一下解析的是哪个便签
  1. //具体判断一下解析到了哪个结点
  2. switch(eventType)
  3. {
  4. //解析开始标签
  5. case XmlPullParser.START_TAG:
  6. //[4]具体判断一下 解析到是哪个开始标签
  7. if("weather".equals(parser.getName()))
  8. {
  9. //[5]创建一个集合对象
  10. weatherLists = new ArrayList<Channel>();
  11. }
  12. else if("channel".equals(parser.getName()))
  13. {
  14. //[6]创建Channel对象
  15. channel = new Channel();
  16. //[7]获取id值
  17. String id = parser.getAttributeValue(0);
  18. channel.setId(id);
  19. }
  20. else if("city".equals(parser.getName()))
  21. {
  22. //[8]获取city的数据
  23. String city = parser.nextText();
  24. channel.setCity(city);
  25. }
  26. else if("temp".equals(parser.getName()))
  27. {
  28. //[9]获取temp的数据
  29. String temp = parser.nextText();
  30. channel.setCity(temp);
  31. }
  32. else if("wind".equals(parser.getName()))
  33. {
  34. //[10]获取wind的数据
  35. String wind = parser.nextText();
  36. channel.setCity(wind);
  37. }
  38. else if("pm250".equals(parser.getName()))
  39. {
  40. //[11]获取pm250的数据
  41. String pm250 = parser.nextText();
  42. channel.setCity(pm250);
  43. }
  44. break;
  45. //解析结束标签
  46. case XmlPullParser.END_TAG:
  47. //判断要解析的结束标签
  48. if("channel".equals(parser.getName()))
  49. {
  50. //把javabean对象存在集合中
  51. weatherLists.add(channel);
  52. }
  53. break;
  54. }


12 今日总结
    [0]测试的相关概念(了解)
    [1]单元测试(掌握)
        定义一个类继承AndroidTestCast
        在清单文件里配置一个指令集uses-library
    [2]日志猫的使用(了解)
    [3]login案例 练习IO(练习一下就可以了)
    [4]如何获取sd卡的目录  如何判断sd卡状态是否可用(掌握)
        Environment
    [5]文件权限的概念(了解)
    [6]sp的使用(必须的会)
    [7]生成xml的方式
        (1)使用StringBuffer(了解)
        (2)使用xml的序列化器(掌握)
    [8]xml解析(掌握)







只言片语任我说,提笔句句无需忖。落笔不知寄何人,唯有邀友共斟酌。
原文地址:https://www.cnblogs.com/phonecom/p/99b42404850f34aa0f7b3540a41155d2.html