美文网首页
02安卓学习笔记(二)

02安卓学习笔记(二)

作者: biyu6 | 来源:发表于2019-02-26 13:54 被阅读0次

    目录

    [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中配置测试的函数库:
            <uses-library android:name="android.test.runner"/>
        在与application同级处配置测试设备的主类和目标包:
            <instrumentation android:name="android.test.InstrumentationTestRunner"  
                     android:targetPackage="包名" /> 
    [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安卓学习笔记(二)

          本文链接:https://www.haomeiwen.com/subject/wfeayqtx.html