Android基础知识(二)

来源:互联网 发布:java定义数组的方法 编辑:程序博客网 时间:2024/05/21 22:54

1测试的相关概念

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

[2]    当当  1  2 3  -8         京东:

 

1.1   根据是否知道源代码分为

黑盒(功能测试):

白盒(知道源代码自己写测试代码):

1.2  根据测试的力度

        方法测试

        单元测试

        集成测试:安卓客户端写好了,网络接口也写好了,集成在一起进行测试

        系统测试

1.3   根据测试的暴力程度

压力:12306  过年时卡得很

冒烟:谷歌工程师给我们提供了一个money+1000(次数)可以进行压力测试


2 单元测试

测试的业务方法!

[1]定义一个类继承AndroidTestCase

[2]在清单文件中配置use-library和instrumentation(上图的红色部分,注意其位置)

[3]如果上面的东西搞丢了 可以这样配置:可以自己手动创建一个Android的测试工程,在测试工程里面都会自动配置好。


3 日志猫的使用

要求会加过滤器!


4 使用上下文获取常见目录

【1】String path = context.getFilesDir().getPath();

【2】使用上下文快速获取文件的输出流和输入流

          FileOutputStream fos = context.openFileOutput("infoo.txt”,0);

          FileInputStream fis = context.openFileInput("infoo.txt");


5 登录数据存储到SD卡

          往SD卡存储数据需要获取权限:WRITE_EXTERNAL_STORAGE

【1】获取SD卡的目录

String sdPath = Environment.getExternalStorageDirectory().getPath();

File file = new File("sdPath","haha.txt");

【2】判断SD卡是否可用

if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){

Toast.makeText(MainActivity.this,"SD卡可用",1).show();

}else{

Toast.makeText(MainActivity.this,"SD卡不可用",1).show();

}


6 获取SD卡可用空间

      //[1]找到我们关心的控件

      TextView tv_total_size = (TextView)findViewById(R.id.textView1);

      TextView tv_usable_size = (TextView) findViewById(R.id.textView2);

       //[2]获取SD卡总大小和可用空间

       File file =Environment.getExternalStorageDirectory();

       long totalSpace = file.getTotalSpace();//总大小

       long usableSpace = file.getUsableSpace();//可用空间

       //[3]转换数据格式

       String formatTotalSize = Formatter.formatFileSize(this, totalSpace);

       String formatUsableSize = Formatter.formatFileSize(this, usableSpace);

       //[4]展示到TextEdit上

       tv_total_size.setText("总大小:"+formatTotalSize);

       tv_usable_size.setText("可用大小:"+formatUsableSize);


7 文件权限的介绍


      修改文件权限-->使用Linux下一个指令(chmod)步骤:

     cmd-->敲指令:adb shell-->cd 到修改文件的目录-->chmod 777要修改文件权限的文件名(eg:private.txt)


8 SharedPreferences介绍

【1】获取sp的实例

sp = getSharedPreferences("config",0);

【2】获取编辑器

Editor edit = sp.edit();

【3】存数据

edit.putString("name",name);

edit.putString("pwd",pwd);

【4】一定要commit

edit.commit();


9 生成xml的第一种方式(StringBuffer自己组拼)

//[1]初始化我们要备份的数据        smsLists = new ArrayList<Sms>();                for(int i = 0; i < 10; i++)        {        Sms sms = new Sms();        sms.setAddress("10086"+i);        sms.setBody("nihao"+i);        sms.setDate("201"+i);        //[2]把sms对象加入到集合中        smsLists.add(sms);        }            }        //点击按钮 通过StringBuffer的方式生成一个xml文件        public void click(View v)    {    //[1]创建sb对象    StringBuffer sb = new StringBuffer();        //[2]开始组拼xml文件头    sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");    //[3]开始组拼xml根节点    sb.append("<smss>");    //[4]开始组拼smss结点    for(Sms sms:smsLists)    {    sb.append("<sms>");    //[5]开始组拼address结点    sb.append("<address>");    sb.append(sms.getAddress());    sb.append("</address>");        //[6]开始组拼body结点    sb.append("<body>");    sb.append(sms.getBody());    sb.append("</body>");        //[7]开始组拼date结点    sb.append("<date>");    sb.append(sms.getDate());    sb.append("</date>");        sb.append("</sms>");    }        sb.append("</smss>");        //[8]把数据保存到sd卡中    try {File file = new File(Environment.getExternalStorageDirectory().getPath(), "smsbackup.xml");FileOutputStream fos = new FileOutputStream(file);fos.write(sb.toString().getBytes());fos.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}

10 生成xml的第二种方式(使用xml序列化器)

try {//[1]获取XmlSerializer类的实例  通过X买了这个工具类去获取XmlSerializer serializer = Xml.newSerializer();//[2]设置serializer序列化器参数File file = new File(Environment.getExternalStorageDirectory().getPath(),"smsbackup2.xml");FileOutputStream fos = new FileOutputStream(file);serializer.setOutput(fos, "utf-8");//[3]开始写xml文档开头serializer.startDocument("utf-8", true);//[4]开始写xml文档的根节点  namespace:命名空间serializer.startTag(null, "smss");//[5]循环写sms结点for (Sms sms : smsLists) {serializer.startTag(null, "sms");//[6]开始写address结点serializer.startTag(null, "address");serializer.text(sms.getAddress());serializer.endTag(null, "address");//[7]开始写body结点serializer.startTag(null, "body");serializer.text(sms.getBody());serializer.endTag(null, "body");//[8]开始写date结点serializer.startTag(null, "date");serializer.text(sms.getDate());serializer.endTag(null, "date");//sms结点结束serializer.endTag(null, "sms");}serializer.endTag(null, "smss");//写文档的结尾serializer.endDocument();fos.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}

11  XML的解析

[1] Xml的数据来源  来源于服务器  服务器的开发人员通过服务器的技术把数据准备一个xml返回给客户端。

[2] 对于Android的开发人员 只需要做解析的操作,把我们关心的数据取出来就可以了!

[3]服务器是以流的形式把数据返回


解析步骤:[1] 获取XmlPullParser解析的实例XmlPullParser parser = Xml.newPullParser();[2]设置XmlPullParser的参数parser.setInput(in, "utf-8");[3]获取事件类型int type = parser.getEventType();[4]具体判断一下解析到了哪个节点while(type!=XmlPullParser.END_DOCUMENT)while(type!=XmlPullParser.END_DOCUMENT){//具体判断一下解析到了哪个节点switch (type) {case XmlPullParser.START_TAG://解析开始标签//[4]具体判断一下解析到是哪个开始标签、if ("weather".equals(parser.getName())) {//创建一个集合对象weatherlists = new ArrayList<Channel>();}else if("channel".equals(parser.getName())){//[6]创建Channel对象channel = new Channel();//[7]获取id值String id = parser.getAttributeValue(0);channel.setId(id);}else if("city".equals(parser.getName())){//[8]获取city的数据String city = parser.nextText();channel.setCity(city);}else if("temp".equals(parser.getName())){//[9]获取temp的数据String temp = parser.nextText();channel.setTemp(temp);}else if("wind".equals(parser.getName())){//[10]获取wind的数据String wind = parser.nextText();channel.setWind(wind);}else if("pm250".equals(parser.getName())){//[11]获取pm250的数据String pm250 = parser.nextText();channel.setPm250(pm250);}break;case XmlPullParser.END_TAG://解析结束标签//具体判断一下要解析的结束标签if ("channel".equals(parser.getName())) {//把javabean对象存到集合中weatherlists.add(channel);}break;}//不停的向下解析type = parser.next();}











原创粉丝点击