1.插件类型 Gradle的插件分为两种类型:脚本插件(script plugins)和二进制插件(binary plugins)。 脚本插件就是额外的构建脚本,脚本插件通常...
1.插件类型 Gradle的插件分为两种类型:脚本插件(script plugins)和二进制插件(binary plugins)。 脚本插件就是额外的构建脚本,脚本插件通常...
LRU 全称是 Least Recently Used,即最近最久未使用算法,它是页面置换算法的一种。 原理 如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能...
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也...
当谈论面向对象的时候,我们到底在谈论什么? 什么是面向对象编程和面向对象编程语言? 面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、...
对于单一职责原则,如何判定某个类的职责是否够“单一”? 如何理解单一职责原则(SRP)? 一个类只负责完成一个职责或者功能。 也就是说,不要设计大而全的类,要设计粒度小、功能...
什么情况下要重构?到底重构什么?又该如何重构? 重构的目的:为什么要重构(why)? 在保持功能不变的前提下,利用设计思想、原则、模式、编程规范等理论来优化代码,修改设计上的...
创建型模式主要解决对象的创建问题,封装复杂的创建过程,解耦对象的创建代码和使用代码。 单例模式 单例设计模式(Singleton Design Pattern)理解起来非常简...
结构型模式主要总结了一些类或对象组合在一起的经典结构,这些经典的结构可以解决特定应用场景的问题。 代理模式 代理模式的原理与实现 在不改变原始类(或叫被代理类)的情况下,通过...
行为型设计模式主要解决的就是“类或对象之间的交互”问题。 观察者模式 在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会自动收到通知。 设计模式要干...
从哪些维度评判代码质量的好坏?如何具备写出高质量代码的能力? 最常用的评价标准有哪几个? 可维护性(maintainability) 可读性(readability) 可扩展...
11.1 应用程序中的View框架 View 和 ViewRoot ViewRoot 可以被理解为“View树的管理者”--它有一个 mView 成员变量,指向它所管理的 V...
“窗口”是一个抽象的概念,从用户角度来讲,它是一个“界面”;从 SurfaceFlinger 角度来看,它是一个 Layer,承载着和“界面”有关的数据和属性;从 WMS 的...
GUI(Graphic User Interface)即“图形用户界面”。Android 的 GUI 系统是基于 OpenGL/EGL 实现的。 9.4 Android中的本...
8.1 AMS功能概述 AMS 寄存于 SystemServer 中,在系统启动时,创建一个线程来循环处理客户的请求。 四大组件状态管理 组件状态查询 Task 相关 其他辅...
7.1 第一个系统进程(init) Android 设备的启动必须经历3个阶段,即 Boot Loader、Linux Kernel 和 Android 系统服务,默认情况下...
Binder 是 Android 中使用最广泛的 IPC 机制。 Binder 驱动(路由器) Service Manager(DNS) Binder Client(客户端)...
5.1 Android 进程和线程 进程(Precess)是程序的一个运行实例,线程(Thread)是 CPU 调度的基本单位。 四大组件不是程序(进程)的全部,而只是它的“...
4.1 计算机体系结构(Computer Architecture) 冯·诺依曼结构 内存储器,运算器,控制器,输入设备,输出设备 采用二进制,抛弃十进制。 程序存储(sto...
函数式接口 Java 8 引入的一个核心概念是函数式接口(Functional Interfaces)。通过在接口里面添加一个抽象方法,这些方法可以直接从接口中运行。如果一个...
代理相关概念 在某些情况下,我们不希望或是不能直接访问对象 A,而是通过访问一个中介对象 B,由 B 去访问 A 达成目的,这种方式我们就称为代理。 这里对象 A 所属类我们...