-
测试的相关概念
- 好的软件不是开发出来的,是不断测试出回来的
-
根据是否知道源代码
- 黑盒测试
- 白盒测试
-
根据测试的粒度
- 方法测试
- 单元测试
- 集成测试
- 系统测试
-
根据测试的暴力程度
- 压力测试(谷歌工程师提供了一个monkey+COUNT指令可以进行压力测试)
- 冒烟测试
-
单元测试
- 定义一个类,继承AndroidTestCase类(可能有变化)
- 在清单文件里配置uses-library和instrumentation
-
日志猫的使用
调试使用
-
Login登录案例
用户名密码保存到内部存储器,记住后下次登陆显示
-
使用上下文获取常见目录
String path = context.getFilesDir().getPath();
File file = new File(path,"info.txt");
-
登陆数据存储到sd卡
- String sdpath = Environment.getExternalStorageDirectory().getPath();
-
需要添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-
获取sd卡可用空间
- String sdpath = Environment.getExternalStorageDirectory().getPath();
- long total = file.getTotalSpace();
- long usable = file.getUsableSpace();
- String a = android.text.format.Formatter.formatFileSize(context,total);
- String b = android.text.format.Formatter.formatFileSize(context,usable);
-
文件权限的介绍
-
SharedPreferences介绍(*****)
-
创建对象,拿到sp实例
SharedPreferences sp = get SharedPreferences("config",0);
-
获取sp的编辑器
Editor edit = sp.edit();
-
添加数据
edit.putString("name",name);
edit.putString("pwd",pwd);
- 把编辑器提交
Edit.commit();
数据保存成功
-
读取数据:
先初始化sp的实例
-
sp.getString("name","")
sp.getString("pwd","")
- 把name和pwd设置到相应的显示控件上
-
-
xml的序列号(使用Xmlserlalizer序列化器生成xml的步骤
- 获取serlalizer实例
XmlSerializer serializer = Xml.newSerializer(); - 设置serializer序列化参数
File file = new File("/data/data/com.lgqchinese.xmlcreate/text.xml");
FileOutputStream fos = new FileOutputStream(file);
serializer.setOutput(fos,"utf-8"); - 开始写xml开头
serializer.startDocument("utf-8",true); - 写根节点
serializer.startTag(null,"smss"); - 写其他节点
serializer.startTag(null,"sms"); - 在sms标签中写其他节点内容
serializer.text("sms内容"); - 依次写xml结束
serializer.endTag(null,"sms");
serializer.endTag(null,"smss");
serializer.endDocument();
- 获取serlalizer实例
-
xml的解析
- xml来源于服务器,
- android的开发人员只负责解析,读取
- 服务器是以流的形式把数据返回
-
解析步骤
- 获取XmlOullParser实例
XmlPullParser pullParser = Xml.newPullParser(); - 设置XmlOullParser参数
pullParser.setInput(inputStream, "utf-8"); - 获取解析温江的事件类型
int type = pullParser.getEventType(); - 判断解析的是哪个标签
package com.lgqchinese.xmlread;
<*这是解析方法,需要在卖弄函数中调用*>
import android.util.Xml; import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException; import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List; public class XmlReadFunc {
public static List<MyJavaBean> parserXML(InputStream inputStream) throws XmlPullParserException, IOException {
List<MyJavaBean> weatherLists = null;
MyJavaBean myJavaBean = null;
//获取实例
XmlPullParser pullParser = Xml.newPullParser();
//设置XmlPullParser参数
pullParser.setInput(inputStream, "utf-8");
//获取文档的时间类型
int type = pullParser.getEventType();
while (type != XmlPullParser.END_DOCUMENT) {
//判断解析到哪个节点
switch (type) {
case XmlPullParser.START_TAG://解析开始标签
//判断具体开始标签
if ("weather".equals(pullParser.getName())) {
weatherLists = new ArrayList<MyJavaBean>();
} else if ("channel".equals(pullParser.getName())) {
//创建myJavaBean对象
myJavaBean = new MyJavaBean();
//获取id值
String id = pullParser.getAttributeValue(0);
myJavaBean.setId(id); } else if ("city".equals(pullParser.getName())) {
//获取city内容
String city = pullParser.nextText();
myJavaBean.setCity(city); } else if ("temp".equals(pullParser.getName())) {
//获取temp内容
String temp = pullParser.nextText();
myJavaBean.setTemp(temp); } else if ("wind".equals(pullParser.getName())) {
//获取wind内容
String wind = pullParser.nextText();
myJavaBean.setWind(wind); } else if ("pm250".equals(pullParser.getName())) {
//获取pm250内容
String pm250 = pullParser.nextText();
myJavaBean.setPm250(pm250); }
break;
case XmlPullParser.END_TAG://解析结束标签
//判断具体的结束标签
if ("channel".equals(pullParser.getName())) {
//把javabean对象放入集合中
weatherLists.add(myJavaBean);
}
break;
} //不停的向下解析
type = pullParser.next();
} return weatherLists;
}
}
- 获取XmlOullParser实例
相关文章
- 07-31安卓内存监控工具,这是一份用心整理的Android面试总结
- 07-312021中级Android开发面试解答,安卓系列学习进阶视频
- 07-31安卓面试题,这里有份超全Android体系化进阶学习图谱
- 07-31安卓开发基础面试题,带着问题深入学习Handler
- 07-31安卓开发必须会的技能!最新Android高级面试题汇
- 07-31android-实现一个简单的视频弹幕,安卓面试题10道
- 07-31Droidcon Shanghai 2019安卓开发者大会,分享Android系统国内外最前沿技术
- 07-31[Swift]LeetCode351. 安卓解锁模式 $ Android Unlock Patterns
- 07-31AndroidStudio_安卓原生开发_精美自定义多选控件_多选Spinner_MultiSpinner_拿来即用---Android原生开发工作笔记144
- 07-31AndroidStudio_安卓原生开发_Android中在LinearLayout中控制按钮居中---Android原生开发工作笔记137