Java SPI 机制
SPI 全称 Service Provider Interface,是 Java 提供的一套用来被第三方实现或者扩展的 API,它可以用来启用框架扩展和替换组件。简单讲就是为某个接口寻找服务实现的机制。
Android 架构模式
Android 开发常用的架构模式有 MVC、MVP 和 MVVM,目的都是为了将业务和视图的实现代码分离,从而使同一个程序可以使用不同的表现形式。
Android RecyclerView
RecyclerView 是 Android 5.0 提出的新 UI 控件,用来替代 ListView。
RecyclerView 官方定义如下:
A flexible view for providing a limited window into a large data set.
Java 注解处理器
APT(Annotation Processing Tool) 即注解处理器,是一种注解处理工具,用来在编译期扫描和处理注解,通过注解来生成 Java 文件。而且只能生成新的源文件而不能修改已经存在的源文件。
Android 类加载器
对于 Android 而言,最终的 apk 文件包含的是 dex 类型的文件。dex 文件是将 class 文件重新打包,打包的规则又不是简单地压缩,而是完全对 class 文件内部的各种函数表,变量表进行优化,产生一个新的文件,即 dex 文件。而加载这种特殊的 class 文件就需要特殊的类加载器 DexClassLoader。
Java 线程池
- 线程的创建和销毁都需要时间,当有大量的线程创建和销毁时,那么这些时间的消耗则比较明显,会导致性能问题。
- 大量的线程创建、执行和销毁是非常耗 cpu 和内存的(每个线程需要大约 1MB 内存),这样将直接影响系统的吞吐量,导致性能下降,如果内存资源占用的比较多,还很可能造成 OOM。
- 大量的线程的创建和销毁很容易导致 GC 频繁的执行,从而发生内存抖动现象,而发生了内存抖动,对于移动端来说,最大的影响就是造成界面卡顿。
针对上述所描述的问题,解决的办法是重用已有的线程,减少线程的创建
。 于是出现了线程池的概念。
线程池的本质是对任务或线程的管理。
Android compileSdkVersion, minSdkVersion 和 targetSdkVersion 之间的关系
Android 为了保持向前兼容
,使用 compileSdkVersion
minSdkVersion
和 targetSdkVersion
分别控制可以使用哪些 API ,要求的 API 级别是什么,以及应用的兼容模式。