Android的设计与实现

Android的设计与实现 pdf epub mobi txt 电子书 下载 2026

出版者:机械工业出版社
作者:杨云君
出品人:
页数:419
译者:
出版时间:2013-5-1
价格:79.00元
装帧:平装
isbn号码:9787111417132
丛书系列:
图书标签:
  • Android
  • android框架,android
  • Android内核
  • 计算机
  • 编程
  • 好书
  • android框架
  • 框架
  • Android
  • 设计
  • 实现
  • 编程
  • 系统
  • 开发
  • 移动
  • 应用
  • 架构
  • 源码
想要找书就要到 小美书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

本书是Android应用开发工程师和Android系统工程师进阶修炼的必读之作。它由资深Android内核专家亲自执笔,从源代码角度,系统、深入、透彻剖析Android系统框架层(Framework)的设计思想和实现原理,为Android应用工程师和系统工程师解决实际工作中的各种难题提供了原理性的指导。为了降低读者的阅读成本,本书使用了大量简单的UML类图和序列图来展示类的层次结构和方法的调用流程,使读者能迅速读完本书并领会其精髓!

“Android的设计与实现”系列丛书主要围绕Android系统的四层结构展开,通过源代码来分析各层的设计思想与实现原理,卷I则主要是针对Framework(框架层)的。全书共12章,分为六个部分:基础篇(第1~2章)详细讲解了Android的体系结构、源代码阅读和调试环境的搭建,以及整个框架的基础;启动篇(第3~4章)深入分析了Android启动过程的机制和实现原理,能帮助读者全面理解框架层系统服务的运行基础;Binder篇(第5~6章)着重分析了Binder在Native框架层和Java框架层的机制和实现,能让读者深入理解进程间的通信模型;消息通信篇(第7章)重点分析了Android的消息驱动和异步处理机制,能让读者深入理解线程间的通信模型;Package Manager篇(第8~9章)主要讲解了Package Manager的机制与实现,以及APK的安装方法与过程;Activity Manager篇(第10~12章)深入阐述了ActivityManagerService的运行机制、应用程序和进程的启动流程,以及进程管理机制。

本书适合中高级的Android应用开发工程师、Android系统开发工程师、Android系统架构师,以及负责对Android系统进行调试和优化的工程师们阅读。

《Java编程精粹:从基础到高级特性》 这是一本专为Java开发者量身打造的进阶指南,旨在帮助读者深入理解Java语言的核心机制,掌握编写高效、健壮、可维护代码的精髓。本书内容涵盖了Java编程的方方面面,从语法糖的巧妙运用,到并发编程的复杂艺术,再到JVM内部原理的深度剖析,无不力求做到透彻与实用。 本书内容概览: 第一部分:Java语言的深度洞察 精通对象与接口: 详细阐述继承、多态、抽象类与接口的设计原则,深入探讨组合优于继承的场景,并通过实际案例展示如何构建灵活、可扩展的类体系。我们将剖析设计模式在对象设计中的实际应用,例如工厂模式、单例模式、策略模式等,并讲解如何根据具体需求选择和组合不同的设计模式。 泛型编程的艺术: 揭示泛型的类型擦除机制,讲解类型边界、通配符的实际作用,以及如何利用泛型编写类型安全的代码,避免运行时类型转换异常。本书将深入探讨泛型在集合框架、装饰者模式等场景的应用,并提供大量实用技巧,帮助读者写出更优雅、更具可读性的泛型代码。 Lambda表达式与函数式接口: 引导读者理解函数式编程思想在Java中的体现,学习Lambda表达式的简洁语法,掌握函数式接口的创建与使用,并将其应用于流式API,实现高效的数据处理。我们将通过实际代码演示,展示Lambda表达式在集合操作、事件监听等场景下的强大威力。 注解与反射: 探索注解的声明、解析与使用,理解其在元数据管理、框架开发中的重要作用。深入讲解Java反射机制,演示如何动态地访问和修改类、对象、方法及属性,并探讨反射在序列化、依赖注入等框架中的应用。 第二部分:并发编程的挑战与应对 线程与进程的基础: 清晰区分线程与进程的概念,详解线程的生命周期、创建与管理,介绍不同线程模型的优缺点。我们将探讨线程同步机制,如`synchronized`关键字、`volatile`关键字,并讲解它们在多线程环境下的作用与局限性。 并发工具包的运用: 深入介绍`java.util.concurrent`包中的核心类,如`ExecutorService`、`Future`、`Callable`、`Semaphore`、`CountDownLatch`等,指导读者如何利用这些工具构建高效、安全的并发应用程序。本书将提供大量示例,展示如何使用这些工具类解决实际的并发问题,例如线程池的管理、任务的异步执行、资源的协调等。 锁机制详解: 详细讲解`ReentrantLock`、`ReadWriteLock`等公平锁与非公平锁的原理与区别,探讨死锁的产生原因及避免策略,并通过实际案例演示锁的正确使用方法。我们将深入分析各种锁的性能特点,帮助读者在不同的场景下选择最合适的锁。 无锁编程与原子操作: 介绍CAS(Compare-And-Swap)算法,讲解`Atomic`包中各种原子类(如`AtomicInteger`、`AtomicReference`)的工作原理,并演示如何利用原子操作实现高性能的无锁数据结构。 第三部分:JVM内部机制深度解析 内存模型与垃圾回收: 剖析Java内存模型(JMM)的各个区域(堆、栈、方法区等),深入理解内存可见性、原子性与有序性问题。详细介绍多种垃圾回收算法(如Serial、Parallel、CMS、G1),讲解其工作原理、优缺点以及适用场景,并提供JVM参数调优指南,帮助读者优化内存使用和垃圾回收效率。 类加载机制: 详细解读JVM的类加载过程:加载、链接(验证、准备、解析)、初始化,并讲解类加载器的继承体系、双亲委派模型及其重要性。我们将探讨自定义类加载器的实现,以及它们在插件化、热部署等场景下的应用。 字节码与性能优化: 介绍Java字节码的结构与指令集,讲解如何使用Javap工具反编译Java代码,理解JVM执行字节码的过程。结合字节码层面,深入分析Java代码的性能瓶颈,并提供切实的性能优化建议,包括算法优化、数据结构选择、JVM参数调优等。 第四部分:Java生态与进阶主题 Spring框架核心: 探索Spring IoC容器的实现原理,理解依赖注入(DI)与面向切面编程(AOP)的强大能力,并学习Spring MVC在Web应用开发中的应用。本书将聚焦Spring的核心概念,提供清晰的解释和代码示例,帮助读者快速掌握Spring框架。 数据库访问与事务管理: 深入讲解JDBC API的使用,介绍连接池的原理与配置,以及Spring JDBC Template和MyBatis等持久化框架的特性。详细阐述数据库事务的ACID特性,讲解Spring事务管理器的配置与使用,确保数据的一致性与完整性。 网络编程与通信: 介绍Java NIO(New I/O)的工作原理,包括Channel、Buffer、Selector等核心组件,并演示如何使用NIO进行高效的网络通信。我们将探讨Netty等高性能网络框架,以及RESTful API的设计与实现。 设计模式与重构: 系统讲解23种经典设计模式(创建型、结构型、行为型)的原理与应用场景,并通过重构案例演示如何应用设计模式提升代码质量。 本书的语言风格严谨而不失生动,注重理论与实践相结合。每一章节都配有大量精心设计的代码示例,力求让读者在理解概念的同时,也能快速上手实践。通过本书的学习,开发者不仅能够巩固Java语言基础,更能提升分析复杂问题、设计优雅解决方案的能力,为成为一名出色的Java工程师奠定坚实的基础。

作者简介

杨云君 资深Android系统专家,不仅在Android应用开发方面积累了丰富的经验,而且精通Android系统级开发和性能优化,对整个Android系统的架构设计与实现原理有十分深入的研究和透彻的认识。就职于国际领先的跨国移动通信公司,作为主任工程师专门从事Android手机的定制和开发,研究Android系统是他的主要工作之一,曾负责了多个手机品牌的多款机型的系统开发和升级工作,经验十分丰富。

目录信息

前言
第一部分 基础篇
第1章 Android体系结构及源代码阅读环境搭建 / 2
1.1 Android发展过程 / 2
1.2 Android体系结构 / 3
1.2.1 静态视角的体系结构 / 3
1.2.2 动态视角的体系结构 / 7
1.3 Android源码下载和编译 / 8
1.3.1 搭建开发环境 / 8
1.3.2 下载Android上层系统源代码 / 9
1.3.3 下载指定模块源码 / 10
1.3.4 下载 Android Linux Kernel源码 / 11
1.3.5 编译Android上层系统源码 / 12
1.3.6 编译指定模块源码 / 12
1.4 Android源码结构 / 14
1.5 Android源码开发工具的配置和使用 / 15
1.5.1 配置Android SDK / 15
1.5.2 用Eclipse开发和调试源代码 / 16
1.5.3 用Source Insight阅读源代码 / 19
1.6 NDK开发环境配置 / 20
1.7 本章小结 / 21
第2章 框架基础JNI / 22
2.1 JNI在Android系统中所处的位置 / 22
2.2 JNI框架层实例分析 / 23
2.2.1 Log系统Java层分析 / 24
2.2.2 Log系统的JNI层 / 24
2.2.3 Log系统的JNI方法注册 / 25
2.3 JNI总管:JNIEnv / 27
2.4 在Java中调用JNI实现方法 / 29
2.4.1 Java数据类型与JNI数据类型转换 / 29
2.4.2 JNI方法命名规则 / 30
2.4.3 JNI方法签名规则 / 31
2.5 JNI操作Java对象 / 32
2.5.1 访问Java对象 / 32
2.5.2 操作成员变量(域)和方法 / 33
2.5.3 全局引用、弱全局引用和局部引用 / 34
2.6 JNI异常处理 / 36
2.7 JNI应用层实例分析 / 38
2.7.1 Java层分析 / 38
2.7.2 JNI层代码和异常处理 / 39
2.8 本章小结 / 42
第二部分 启动篇
第3章 Android启动过程的底层实现 / 44
3.1 Android正常模式启动流程 / 44
3.2 Kernel启动过程 / 44
3.2.1 内核引导阶段 / 45
3.2.2 内核启动阶段 / 46
3.3 init进程的执行过程 / 49
3.4 init.rc文件解析过程 / 53
3.4.1 Android初始化语言 / 53
3.4.2 init.rc的内容 / 56
3.4.3 解析配置文件 / 57
3.4.4 解析Service / 60
3.4.5 解析Action / 63
3.5 触发并启动Action和Service / 65
3.5.1 触发Action / 65
3.5.2 执行Action / 66
3.5.3 启动Service / 70
3.5.4 init对属性服务的处理 / 71
3.6 init循环监听处理事件 / 75
3.7 本章小结 / 77
第4章 Android 启动过程的上层实现 / 78
4.1 第一个Dalvik虚拟机zygote / 79
4.1.1 zygote的配置 / 79
4.1.2 如何执行zygote服务程序 / 80
4.2 ZygoteInit的启动过程 / 82
4.2.1 创建Dalvik虚拟机 / 83
4.2.2 注册JNI方法 / 85
4.2.3 开启Java世界 / 88
4.3 ZygoteInit开启Java世界的五部分工作 / 89
4.3.1 注册zygote的Socket / 89
4.3.2 预加载Class资源和Resource资源 / 89
4.3.3 启动system_server进程 / 92
4.3.4 执行MethodAndArgsCaller的run方法 / 98
4.3.5 执行runSelectLoopMode方法 / 102
4.4 zygote处理Home启动请求 / 104
4.5 本章小结 / 112
第三部分 Binder篇
第5章  Binder在Native框架层的实现 / 114
5.1 Binder与C/S体系结构概述 / 114
5.2 servicemanager进程的启动过程 / 115
5.2.1 初始化Binder通信环境 / 116
5.2.2 注册上下文管理者 / 118
5.2.3 等待接收并处理IPC通信请求 / 120
5.3 Server的启动和Service的注册过程 / 128
5.3.1 创建ProcessState对象 / 129
5.3.2 获取servicemanager的代理对象 / 131
5.3.3 注册Service / 139
5.3.4 Server进程开启线程池 / 145
5.4 Client端使用服务代理对象 / 146
5.5 服务代理与服务通信 / 149
5.6 本章小结 / 152
第6章 Binder在Java框架层的实现 / 153
6.1 Java系统服务的创建过程 / 153
6.1.1 创建JavaBBinderHolder对象 / 155
6.1.2 JavaBBinder的作用 / 156
6.1.3 gBinderOffsets结构体解析 / 156
6.2 Java系统服务的注册过程 / 159
6.2.1 调用BinderInternal.getContextObject方法 / 160
6.2.2 调用ServiceManagerNative.asInterface方法 / 165
6.2.3 调用ServiceManagerProxy. addService方法注册服务 / 167
6.3 Client端获取服务代理 / 169
6.3.1 获取服务的BinderProxy / 170
6.3.2 构造服务的Proxy对象 / 172
6.3.3 构造服务管理者对象 / 173
6.4 Client端调用Java系统服务的方法 / 174
6.5 统一的通信接口AIDL / 177
6.5.1 AIDL实例 / 177
6.5.2 AIDL语法 / 180
6.5.3 处理自定义数据类型的传递 / 181
6.6 本章小结 / 182
第四部分 消息通信篇
第7章 线程消息通信与异步处理 / 184
7.1 什么是Looper线程 / 184
7.2 第一步:Looper线程准备阶段 / 185
7.2.1 创建Java层的Looper对象 / 186
7.2.2 创建Java层的MessageQueue对象 / 186
7.2.3 创建Native层的NativeMessage-Queue和Looper对象 / 187
7.2.4 NativeMessageQueue关联到MessageQueue / 189
7.3 第二步:创建消息处理器并发送消息 / 190
7.3.1 Handler的创建和初始化 / 190
7.3.2 Message的创建和初始化 / 191
7.3.3 消息的发送过程 / 192
7.4 第三步:Looper线程循环阶段 / 198
7.4.1 记录并获取当前线程身份信息 / 198
7.4.2 循环监听消息 / 199
7.4.3 分发消息到处理器 / 205
7.4.4 回收消息并更新消息池 / 209
7.5 异步任务类AsyncTask / 210
7.5.1 AsyncTask的实现 / 211
7.5.2 AsyncTask的执行 / 214
7.6 本章小结 / 223
第五部分 Package Manager篇
第8章 Package Manager 的机制与实现 / 226
8.1  Package Manager体系结构 / 227
8.1.1 三层体系结构 / 227
8.1.2 三层之间的关系 / 228
8.2 PackageManagerService的启动过程 / 231
8.2.1 创建并初始化Settings对象 / 232
8.2.2 获取系统默认配置 / 236
8.2.3 启动PackageHandler / 237
8.2.4 创建data目录并初始化UserManager / 239
8.2.5 解析系统permission和feature信息 / 242
8.2.6 解析packages文件 / 245
8.2.7 dexopt优化判定 / 247
8.2.8 启动FileObserver监控APK文件的目录 / 250
8.2.9 调用scanDirLI方法扫描并安装APK包 / 252
8.2.10 更新packages文件 / 253
8.3 PackageManagerService启动过程使用的核心组件 / 254
8.3.1 Java层的Installer / 255
8.3.2 Installd中的命令 / 258
8.4 本章小结 / 260
第9章 APK的安装过程 / 261
9.1 通过scanDirLI方法安装APK / 261
9.1.1 创建PackageParser / 262
9.1.2 解析AndroidManifest.xml文件 / 263
9.1.3 过滤PackageParser.Package类型的pkg对象 / 270
9.1.4 解析和安装pkg / 274
9.2 使用adb命令安装应用程序 / 282
9.2.1 通过消息机制安装指定的APK / 283
9.2.2 调用handleStartCopy方法处理安装操作 / 286
9.2.3 调用handleReturnCode方法处理返回结果 / 290
9.3  本章小结 / 293
第六部分 Activity Manager篇
第10章 Activity Manager的机制与实现 / 296
10.1 Activity Manager概述 / 296
10.2 ActivityManagerService在系统启动阶段的主要工作 / 297
10.3 第一阶段:启动ActivityManagerService / 299
10.3.1 启动AThread线程 / 300
10.3.2 创建ActivityThread对象 / 302
10.3.3 创建ActivityStack类 / 309
10.3.4 调用startRunning方法 / 310
10.4 第二阶段:调用setSystemProcess方法 / 310
10.4.1 查询并处理ApplicationInfo / 312
10.4.2 创建并初始化ProcessRecord / 313
10.5 第三阶段:调用install-SystemProviders方法 / 315
10.5.1 查询Content Provider / 316
10.5.2 安装Content Provider / 317
10.6 第四阶段:调用systemReady方法 / 323
10.6.1 发送ACTION_PRE_BOOT_COMPLETED广播 / 323
10.6.2 清理预启动的非persistent进程 / 325
10.6.3 读取Settings配置 / 326
10.6.4 运行Runnable回调接口 / 327
10.6.5 启动persistent应用程序和Home / 328
10.7 本章小结 / 329
第11章 应用程序Activity的启动和调度 / 330
11.1 启动应用程序Activity时在Client端的执行流程 / 330
11.2 启动应用程序Activity时在Server端的执行流程 / 334
11.2.1 预启动 / 334
11.2.2 暂停 / 348
11.2.3 启动应用程序进程 / 356
11.2.4 加载应用程序Activity / 362
11.2.5 显示Activity / 369
11.2.6 Activity Idle状态的处理过程 / 379
11.2.7 停止源Activity / 382
11.3 本章小结 / 387
第12章 Activity Manager进程管理 / 388
12.1 LRU weight机制 / 388
12.2 OOM adj机制 / 391
12.2.1 更新OOM adj值 / 392
12.2.2 OOM adj的计算过程 / 403
12.3 Low Memory Killer机制 / 414
12.3.1 OOM adj等级和最小内存阈值 / 414
12.3.2 LM Killer机制的实现 / 417
12.4 本章小结 / 419
· · · · · · (收起)

读后感

评分

Android开发者进阶必备之书, 从应用层窥视框架层, 而后从框架层回视应用, 应用层的难点便一目了然。站在应用框架的角度,用比较浅显易懂的语句来引导应用开发者去观测框架层,可能前期读起来会比较有挑战性, 但随后带来的是醍醐灌顶的透彻,原来Android远不止是调几次api。  

评分

这本书写的很详细,不但适合搞framework的,也适合做app的了解api调用流程!它还教我们怎样去学习框架,对于kernel要了解框架层的也是不二的选择!想要了解android框架的话一定要看看这本书,会受益匪浅!  

评分

这本书写的很详细,不但适合搞framework的,也适合做app的了解api调用流程!它还教我们怎样去学习框架,对于kernel要了解框架层的也是不二的选择!想要了解android框架的话一定要看看这本书,会受益匪浅!  

评分

逻辑性很好,对每一个盲点分析的都很细致,可以解决很多疑惑。 进程管理部分对Android的进程调度有非常好的理解,对app开发帮助很大。 ActivityManager部分对应用程序的启动和activity的调度分析的十分精彩 消息机制与异步处理部分 分析的很透彻。 启动部分,分析了从内核到Lau...  

评分

逻辑性很好,对每一个盲点分析的都很细致,可以解决很多疑惑。 进程管理部分对Android的进程调度有非常好的理解,对app开发帮助很大。 ActivityManager部分对应用程序的启动和activity的调度分析的十分精彩 消息机制与异步处理部分 分析的很透彻。 启动部分,分析了从内核到Lau...  

用户评价

评分

这本书的叙述方式简直是教科书级别的典范。作者没有急于展示那些光鲜亮丽的界面效果或复杂的架构模式,而是从最底层的“为什么”开始,层层递进地剖析了安卓系统在设计哲学上的核心理念。初读时,我差点以为自己在看一本关于计算机科学基础原理的专著,而不是一本专注于移动开发的实操指南。那种对细节的考究,对每一个 API 决策背后设计考量的深入挖掘,让人不禁对这个生态系统产生了一种全新的敬畏感。尤其是在讲解视图渲染管道和内存管理机制的部分,行文严谨而富有逻辑性,仿佛一位经验丰富的大师在手把手地为你拆解一个精密时钟的每一个齿轮。它没有给出即插即用的代码片段,而是提供了理解“黑箱”内部运作的钥匙。这种深层次的理论支撑,使得即便是面对一个看似简单的布局问题,你也能从根本上洞察到性能瓶颈的根源所在。对于那些仅仅满足于“能跑起来”的初学者来说,这本书可能显得有些晦涩和沉重,但对于渴望构建健壮、高性能应用、并立志成为架构师的开发者而言,这无疑是一份无可替代的基石性读物。它教会我的,是如何像系统本身一样去思考问题,而不是仅仅停留在应用层的调用上。

评分

坦白说,这本书的叙事节奏非常缓慢,它更像是一部关于“构建一座城市”的史诗,而不是一个“组装一个工具箱”的速成指南。它对安卓系统中各个子系统的历史沿革和相互依赖关系的梳理,耗费了大量的篇幅。例如,在讲解四大组件生命周期时,作者不仅描述了它们“如何”切换状态,更花了大量篇幅去追溯“为什么”设计成这样的生命周期模型——追溯到早期PDA设备的资源稀缺性。这种历史观的引入,极大地拓宽了我的视野,让我明白现在的设计并非凭空产生,而是无数次妥协和演进的结果。虽然在实战中,我们可能不会每次都重温这段历史,但正是这些背景知识,赋予了我们在面对新版本更迭或遗留系统维护时,作出明智决策的能力。这本书需要时间去消化,它不适合在通勤路上快速浏览,更像是需要在一个安静的下午,泡上一杯浓茶,伴随着代码编辑器一起进行深度研读的伴侣。它建立的知识体系是横向和纵向都极其扎实的。

评分

这本书的独特之处在于其对“可维护性”和“扩展性”的无休止强调。作者在讲解各种设计模式和架构组件时,核心关注点始终是如何降低未来重构的成本。书中关于依赖注入容器和模块化实践的论述,非常成熟且具有前瞻性。特别是它对不同级别抽象层的界限划分,清晰而果断,避免了我们在实际项目中常常陷入的“过度设计”或“技术债堆积”的泥潭。作者用大量的篇幅展示了如何构建一个能够抵御时间侵蚀的工程体系,而不仅仅是一个能通过当前测试用例的代码块。对于那些正处于团队快速扩张期,饱受耦合度困扰的开发者来说,这本书无疑是一剂强心针。它提供了一套近乎冷酷无情的标准,来衡量我们代码的“健康”程度。读完后,我立刻回去审视了手头项目的模块划分,那种拨云见日、豁然开朗的感觉,是任何快速入门书籍无法给予的。这是一种关于软件工程价值观的重塑。

评分

如果非要用一个词来形容这本书对我的影响,那一定是“重构思维”。书中不仅仅展示了如何写出符合规范的代码,更关键的是,它教会了我如何识别和瓦解那些隐藏在日常开发中的“技术债务陷阱”。作者在分析应用崩溃日志和性能瓶颈时,其诊断流程极具启发性。他没有停留在表面的错误信息上,而是深入到操作系统内核层面对线程调度和I/O阻塞的分析。这种自底向上的排错哲学,彻底改变了我过去那种依赖猜测和重启的低效调试习惯。书中给出的每一个最佳实践,都伴随着一个“反面教材”作为对比,生动地展示了如果不遵循该准则可能导致的灾难性后果。这种“痛苦教学法”非常有效,它让你深刻理解了规范背后的必要性。这本书的深度,使得它更像是一部工具箱中的终极手册,只有当你用完了所有常规工具,遇到无法解决的疑难杂症时,才会翻开它,而每一次翻阅,都会带来新的领悟和解决问题的利器。它不是教你如何做,而是让你理解“为什么非得这么做”。

评分

阅读这本作品,我最大的感受是作者那股近乎偏执的对“用户体验”的执着。这不是那种空泛地谈论“美观”和“流畅”的随笔,而是将用户感知与系统实现紧密结合的深度分析。书中对动画曲线的数学模型解析,以及如何利用硬件加速来平滑过渡的论述,细致到了每一个帧率变化的考量。我特别欣赏作者在对比不同设计规范(比如Material Design的演进)时所展现的批判性思维,他并非盲目跟风,而是剖析了每一种设计范式背后的社会环境和技术限制。读完后,我发现自己不再满足于拖动控件,而是开始琢磨如何让交互反馈更加“人性化”,如何通过微妙的延迟和响应来引导用户的注意力。这本书的价值在于,它把“感觉良好”这件事,变成了一门可以量化、可以设计、可以精确实现的工程学科。对于那些在商业化压力下,常常被牺牲掉“打磨时间”的团队来说,这本书提供了一份强有力的理论武器,用以捍卫应用质量的底线。那种对细节的苛求,真的让人感觉像是站在了业界最高标准的那条分界线上。

评分

jni是个好东东

评分

书的内容很严谨,分析的很详细。

评分

对框架层几个核心模块解释的挺清楚,能看出作者是下了一番功夫的。

评分

浏览过了一遍。没有能够消化掉,我就是浏览一下,和那些概念混个脸熟。然后再找更新版本的仔细研读。

评分

大概浏览了一遍,未深读,但解决了自己对android系统的一些疑惑。不敢做评价,待深读后。

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 book.quotespace.org All Rights Reserved. 小美书屋 版权所有