0%

SPI 全称 Service Provider Interface,是 Java 提供的一套用来被第三方实现或者扩展的 API,它可以用来启用框架扩展和替换组件。简单讲就是为某个接口寻找服务实现的机制。

java spi

阅读全文 »

Android 开发常用的架构模式有 MVC、MVP 和 MVVM,目的都是为了将业务和视图的实现代码分离,从而使同一个程序可以使用不同的表现形式。

阅读全文 »

RecyclerView 是 Android 5.0 提出的新 UI 控件,用来替代 ListView。

RecyclerView 官方定义如下:

A flexible view for providing a limited window into a large data set.

阅读全文 »

APT(Annotation Processing Tool) 即注解处理器,是一种注解处理工具,用来在编译期扫描和处理注解,通过注解来生成 Java 文件。而且只能生成新的源文件而不能修改已经存在的源文件。

阅读全文 »

对于 Android 而言,最终的 apk 文件包含的是 dex 类型的文件。dex 文件是将 class 文件重新打包,打包的规则又不是简单地压缩,而是完全对 class 文件内部的各种函数表,变量表进行优化,产生一个新的文件,即 dex 文件。而加载这种特殊的 class 文件就需要特殊的类加载器 DexClassLoader。

阅读全文 »

  1. 线程的创建和销毁都需要时间,当有大量的线程创建和销毁时,那么这些时间的消耗则比较明显,会导致性能问题。
  2. 大量的线程创建、执行和销毁是非常耗 cpu 和内存的(每个线程需要大约 1MB 内存),这样将直接影响系统的吞吐量,导致性能下降,如果内存资源占用的比较多,还很可能造成 OOM。
  3. 大量的线程的创建和销毁很容易导致 GC 频繁的执行,从而发生内存抖动现象,而发生了内存抖动,对于移动端来说,最大的影响就是造成界面卡顿。

针对上述所描述的问题,解决的办法是重用已有的线程,减少线程的创建。 于是出现了线程池的概念。

线程池的本质是对任务或线程的管理。

阅读全文 »