Android基础知识(二)

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 block
			e.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 block
			e.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();	
		}











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值