0%

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的体积大小。

阅读全文 »

持续集成(CI) 是一种开发实践方式,需要团队中的开发人员定期集成代码编译,测试工作,通常每天多次,每次推送到主代码仓库都需要通过自动构建进行验证。这种做法有助于尽快发现问题,从而加快开发速度,并提高代码的质量。大拿Martin Fowler写了一篇关于这个主题的文章,解释了这些概念,并描述了持续集成最佳实践

有几种方式可以为Android设置CI。最广泛使用的是Jenkins,TeamCity和Travis CI。Jenkins有最大的生态系统,有大约1000个可用的插件,Jenkins本身是一个开源项目与现在仍然有很多贡献者。TeamCity是JetBrains的产品,JetBrains我们应该都很熟悉,JetBrains也创建了IntelliJ IDEA(Android Studio就是基于此开发的)。 Travis CI是相对较新,主要用于开源项目。

这一章节,我们将学习到这些CI系统,以及如何让Gradle在这些系统上工作。在本章结尾处,还将学到一些Gradle技巧,使自动化CI更容易。

这一章节,主要包括如下几个部分:

  • Jenkins
  • TeamCity
  • Travis CI
  • 更多技巧
阅读全文 »