0%

基础概念

按照Google官方建议,Android测试体系应该参照测试金字塔架构(如下图所示),App应该包含三类测试(即小型、中型和大型测试):

  • 小型测试是指单元测试,用于验证应用的行为,一次验证一个类。
  • 中型测试是指集成测试,用于验证模块内堆栈级别之间的交互或相关模块间的交互。
  • 大型测试是指端到端测试,用于验证跨越了应用的多个模块的用户UI点击操作流程。

沿着金字塔逐级向上,从小型测试到大型测试,各类测试的保真度(对于用户的真实感受)逐级提高,但维护和调试工作所需的执行时间和工作量也逐级增加。因此,我们编写的单元测试应多于集成测试,集成测试应多于端到端测试。虽然各类测试的比例可能会因应用的用例不同而异,但我们通常建议各类测试所占比例如下:小型测试占 70%,中型测试占 20%,大型测试占 10%。

今天我们主要讨论的是占比70%的小型测试,也叫单元测试。

阅读全文 »

Android Coroutine开发实践

背景

在Android应用的开发中,我们最常见到的一个应用场景是请求网络数据接口然后显示在UI界面上,如下面代码所示

1
2
val user = fetchUserData()
textView.text = user.name

但是当你运行上面的代码时就会发发现程序报错,抛出了 NetworkOnMainThreadException 的异常,这是因为Android不允许在主线程(也就是UI线程)中进行网络操作。这时,我们需要加上后台线程去处理网络请求

1
2
3
4
workerThread{
val user = fetchUserData()
textView.text = user.name
}
阅读全文 »

What is Rx?

基本概念

RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.

按照官方介绍RxJava是由Netflix发起的一个在JVM平台上以Observable序列来处理异步任务的响应式编码库

Why Rx?

现在Android社区都在广泛的推广和使用RxJava,但是使用它究竟能能带来什么样的好处呢,我们通过一个具体的案例来研究

阅读全文 »

很多人认为程序的内存管理偏向操作系统层面,在做Android或者Java应用层的开发时不需要关心太多底层的问题,Java中的JVM或者Android中的Dalvik或ART已经做了大部分工作,不需要开发者了解太多细节。但是随着app功能的扩展,性能上的优化需要被提上日程,这使得开发者在做这些性能上的优化工作时不得不去深入地了解程序底层上内存管理上的细节,接下来我将着重介绍在应用开发过程中我们需要掌握的一些内存管理细节,但是也不会太过深入底层,做到先看森林再晓树木。
这个主题将定为如下三个部分:

阅读全文 »

本篇文章翻译自官方介绍文档(原文

本篇文章介绍了如何在Android开发中使用Android的Data Binding库来减少开发中的胶水代码(组织布局和业务逻辑的代码)。
Data Binding库支持在Android 2.1(API level 7)及以上版本中使用。
使用Data Binding,Gradle的Android插件需要使用1.5.0-alpha1及以上版本。具体配置可参考如何更新Gradle Android插件?

阅读全文 »

分清Style和Theme

首先我们需要知道的是Theme和Style都是定义在res/values/styles.xml的文件下,做个类比的话,style和theme就类似于web前端中的CSS样式表,用来定义控件的显示样式。

Style

style是只针对单个View的属性集合,例如对TextView定义颜色,字体大小等

阅读全文 »

ConstraintLayout使用实践

ConstraintLayout是2017年Google IO上推出的一种新的布局方式,相较于其他几种布局(LinearLayout,RelativeLayout等),ConstraintLayout设计用于构造扁平的布局层级,减少layout的嵌套,从而提升界面绘制的速度,在布局中使用ConstraintLayout性能比其他几种布局会提升很多,后面我们会详细介绍到。

Why ConstraintLayout?

阅读全文 »

现在我们知道了Gradle如何工作,如何创建自定义任务和插件、如何运行测试、以及如何设置持续集成环境,我们在Gradle已经小有所成。本章包含了我们在前面几章中没有提到的一些优化技巧,这些技巧使我们可以更轻松地使用Gradle构建,开发和部署Android项目。

在本章中,我们将学习到以下主题:

  • 压缩Apk大小
  • 加快Build速度
  • 忽略Lint检查
  • 在Gradle中使用Ant
  • 应用发布的高级技巧

首先我们来看下如何减小构建Apk的体积大小。

阅读全文 »