0%

Android调试桥(Android Debug Bridge,简称ADB)。本文主要是记录如何在WLAN网络下进行ABD连接设备以及一些常用的ADB命令,还有ADB的组成以及原理简要说明。

Gradle作为一款优秀的构建工具,也作为是目前Android主流的构建工具,不管是通过命令行还是通过GUI方式构建,背后都是通过Gradle来实现的,所以学习Gradle非常重要。无论是组件化、插件化、热修复等技术都需要对Gradle比较了解,不懂Gradle将无法完成上述事情,所以Gradle必须要学习。这篇文章主要是针对组件化的Android项目,如何使用Gradle完成公共配置项的抽取,Gradle如何定义Task,工程测试环境与正式环境的自动配置等内容。

在非常简单的业务场景下,单一工程就可以实现一个完整的App,而且维护和开发都非常简单。但是当一个App涉及到很多功能,单一的Module显得很吃力。如果整个工程一个 Module,业务逻辑都写在app模块中不同的包下:无论分包做的再好,随着项目增大也会失去层次感,接手起来也很吃力;而且包名约定作为约束太弱,一不注意就出现不同业务包之间直接相互调用,代码高度耦合;多人联合开发在版本管理中很容易出现冲突和代码覆盖问题。那么就很容易出现下面的场景:

1// when I wrote this, only god and I understood what I was doing
2
3// Now, god only knows

本文主要围绕什么是组件化,为什么需要组件化,如何进行组件化展开。路由在Android组件化开发中的重要作用,分析路由框架的实现原理,如何一步一步实现一个路由框架。

摩尔定律让算力放缓,以前学习的都是32位的x86汇编,不得不说x86架构的指令集真的是历史包袱太重了,x86架构的不足在当代急需超强的算力的背景下越发明显,功耗大、通用寄存器数量少、计算机硬件利用率低、寻址范围小等问题凸显,难以跟上算力发展的速度。与此同时,ARM架构在移动互联网盛行的当下却开始焕发出别样的生命力。于是最近看了看ARM架构下的衍生RISC-V架构,顺便回顾一下计算机组成原理的相关内容。

在UI界面加载一张图片时很简单,然而如果需要加载多张较大的图像,事情就会变得更加复杂。在许多情况下(如ListView、RecyclerView或ViewPager等的组件),屏幕上的图片的总数伴随屏幕的滚动会大大增加,且基本上是无限的。为了使内存使用保持在稳定范围内,防止出现OOM,这些组件会在子 View划出屏幕后,对其进行资源回收,并重新显示新出现的图片,垃圾回收机制会释放掉不再显示的图片的内存空间。但是这样频繁地处理图片的加载和回收不利于操作的流畅性,而内存或者磁盘的Cache就会帮助解决这个问题,实现快速加载已加载的图片。在缓存上,主要有两种级别的Cache:LruCache和DiskLruCache,即内存缓存与磁盘缓存。我们就来借助内存缓存和磁盘缓存来实现一个简易的图片缓存框架。

RecyclerView是Android 5.0以后提出的新UI控件,可以用来代替传统的ListView。但是RecyclerView并不会完全替代ListView,因为两者的使用场景不一样。但是RecyclerView的出现会让很多开源项目被废弃,例如横向滚动的ListView, 横向滚动的GridView, 瀑布流控件,因为RecyclerView能够实现所有这些功能,这是由于RecyclerView对各个功能进行解耦,从而相对于ListView有更好的拓展性。本篇文章着重讲述RecyclerView的使用方式方式上,以及和ListView的对比。

EventBus是GreenRobot开发的Android和Java的开源库,使用发布者/订阅者模式进行解耦合。EventBus使组件之间的通信只需几行代码即可搞定,极度解耦并且简化了代码,消除依赖关系并加快应用程序开发。这里是EventBus的官网: https://greenrobot.org/eventbus/ 。在介绍EventBus的通信方法之前,首先会介绍常规的通信方法,比如说设置监听或者是使用广播等方式,以此来说明常规的方法都有其弊端,然后使用EventBus来完成组件之间的通信,通过案例体会EventBus在组件通信过程中的优势。

前面的文章介绍了自定义View的需要准备的基础知识,自定义View的属性获取、测量(Measure)过程,Measure过程是为了计算View的大小。本篇文章主要记载一下自定义View过程中的Layout过程,Layout过程用于计算View的位置。另外还有更关键的一步,那就是绘制(Draw)过程,一切都准备好了就需要开始绘制出我们的自定义View,后面会有一个绘制例子,在该示例中绘制了一个圆形且带有进度文字说明的进度条,通过这个示例切实感受一下自定义View的魅力。最后还有一个重点就是自定义View状态的存储与恢复。