

关于 Glide 的一切
Glide 是比较著名的图片加载库之一,类似的库还有 Picasso、COIL。这篇文章来讲讲 Glide 是如何加载图片到显示的,并且讲一讲它有哪些设计精妙的地方。 该文章使用的是 Glide 4.15.0。
Read more

Context 和它的朋友们
在 Android 开发中,最常打交道的就是 Context 了,我们创建 View/ViewGroup 要使用 Context;启动 Activity 需要 Context;新建 Service 需要 Context;哪怕是插件化、组件化开发中,最麻烦的部分也是使用 Context。 那么,既然这个东西这么重要,我们这篇文章就来说说 Context 与它的朋友们。
Read more

关于Binder的一切
关于Binder的一切毫不夸张地说,Binder 是 Android 系统中最重要的特性之一。 正如其名『粘合剂』所喻,它是系统间各个组件的桥梁,Android 系统的开放式设计也很大程度上得益于这种及其方便的跨进程通信机制。 理解 Binder 对于理解整个 Android 系统有着非常重要的作用,Android 系统的四大组件,ActivityManagerServer,PackageManagerService 等系统服务无一不与 Binder 挂钩;如果对 Binder 不甚了解,那么就很难了解这些系统机制,从而仅仅浮游与表面,不懂 Binder 你都不好意思说自己会 Android 开发;要深入 Android,Binder 是必须迈出的一步。 这篇文章将由浅入深搞懂 Binder :
Read more

关于线程安全的一切
自从多线程这个概念被发明之后,在开发中就无时无刻不得操心线程安全的问题。 但是,在了解线程安全之前,我们先来了解一下 Java 的内存模型,搞明白线程是如何工作的。
Read more

关于线程池的一切
线程池(Thread Pool)对于限制应用程序中同一时刻运行的线程数很有用。因为每启动一个新线程都会有相应的性能开销,每个线程都需要给栈分配一些内存等等。 我们可以把并发执行的任务传递给一个线程池,来替代为每个并发执行的任务都启动一个新的线程。只要池里有空闲的线程,任务就会分配给一个线程执行。在线程池的内部,任务被插入一个阻塞队列(Blocking Queue ),线程池里的线程会去取这个队列里的任务。当一个新任务插入队列时,一个空闲线程就会成功的从队列中取出任务并且执行它。 线程池经常应用在多线程服务器上。每个通过网络到达服务器的连接都被包装成一个任务并且传递给线程池。线程池的线程会并发的处理连接上的请求。 合理利用线程池能够带来三个好处。 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成..
Read more