

Android 面试题合集
兔子自己总结的一些面试题。题目会慢慢变多,答案也全部是自己写的,并非网上找的答案。 还有一篇Awesome Android Job Interview
Read more

关于 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

你真的了解 Activity 吗?
Activity 几乎是所有 Android 开发者最熟悉的陌生人了。 说它熟悉,是因为每个开发者在进行开发时,第一个要面对的对象就是 Activity,应用界面的跳转、UI的显示全部都要依托Activity。 说它陌生,是因为几乎很少有开发者能把 Activity、Window、View、DecorView、WindowManager、ViewRootImpl 错综复杂的关系理清。 当我们打开 Android Studio,建立一个新的应用,编译启动项目,手机上出现了『Hello World!』,有没有想过这些问题: Activity 是由谁来实例化的? Window 是个啥? 经常听说 DecorView,它是个普通的 View 吗?它的作用是什么? WindowManager 起了什么作用? Act..
Read more关于 Butter Knife
这篇文章讲一下 Butterknife,但是后面会引申到 Android Jetpack 中的 DataBinding。
Read more

关于注解
Annotation 是 JDK1.5 之后加入到 Java 中的,它其实就是代码里的特殊标记, 用于替代配置文件,也就是说,传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行。它提供了一种安全的类似注释的机制,用来将信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。它像一种修饰符一样,应用于包、类型、构造方法、方法、成员变量、参数及本地变量的声明语句中。
Read more

关于几种常见的缓存算法
目前常见的几种缓存算法包括但不限于 FIFO、LRU、LFU、MRU。下面我们一一介绍并深入一下。
Read more