file-type

《深入理解Android》卷Ⅱ:系统架构与服务管理解析

4星 · 超过85%的资源 | 下载需积分: 50 | 47.91MB | 更新于2025-02-14 | 61 浏览量 | 96 下载量 举报 3 收藏
download 立即下载
《深入理解Android》卷Ⅱ是一本专注于Android系统内部机制和组件深入分析的书籍,涵盖了从源码搭建、Binder机制、服务系统、应用管理到内容提供等多个核心知识点。以下是对标题和描述中提到的知识点的详细说明: ### 第1章 搭建Android源码工作环境 - **Android系统架构**:介绍Android平台的整体架构,包括Linux内核、系统库、Android运行时、应用程序框架等层次。 - **搭建开发环境**: - **下载源码**:详细描述了如何从Android Open Source Project (AOSP)下载完整的Android源代码。 - **编译源码**:指导读者如何编译源码以创建自己的ROM或进行修改和测试。 - **利用Eclipse调试system_process**:虽然Eclipse已经不是主流开发环境,但本节可能还会介绍如何用它来调试Android系统的核心进程。 ### 第2章 深入理解Java Binder和MessageQueue - **Java层中的Binder架构分析**: - **Binder架构总览**:解释Android中Binder进程间通信机制的工作原理及其在Java层的实现。 - **初始化Java层Binder框架**:描述Binder框架在Java层初始化的步骤和关键组件。 - **addService实例分析**:具体案例,分析服务注册过程中的Binder通信细节。 - **Java层Binder架构总结**:总结Java Binder架构的工作模式和关键点。 - **心系两界的MessageQueue**: - **MessageQueue的创建**:介绍消息队列的创建机制和在事件循环中的作用。 - **提取消息**:探讨如何从消息队列中取出消息,并进行分发。 - **nativePollOnce函数分析**:分析底层对消息队列的轮询机制。 - **MessageQueue总结**:总结消息队列的实现和在Android事件处理中的地位。 ### 第3章 深入理解SystemServer - **SystemServer分析**: - **main函数分析**:解析SystemServer程序的入口点,以及它如何启动系统服务。 - **Service群英会**:详述各种系统服务的职责及其在Android系统中的作用。 - **EntropyService分析**:介绍熵服务的用途,即为系统提供随机数。 - **DropBoxManagerService分析**: - **DBMS构造函数分析**:讨论DropBoxManagerService的构造函数如何初始化。 - **dropbox日志文件的添加**:探讨日志文件如何被记录到dropbox目录。 - **DBMS和settings数据库**:分析dropbox服务与系统设置数据库的交互。 - **DiskStatsService和DeviceStorageMonitorService分析**: - **DiskStatsService分析**:探讨磁盘状态服务是如何工作的。 - **DeviceStorageManagerService分析**:详细解读设备存储监控服务的机制。 - **SamplingProfilerService分析**:讲解性能分析服务的实现和用法。 - **ClipboardService分析**: - **复制数据到剪贴板**:讨论如何将数据复制到Android系统的剪贴板。 - **从剪切板粘贴数据**:解释如何从剪贴板获取数据。 - **CBS中的权限管理**:探讨剪贴板服务中的权限管理机制。 ### 第4章 深入理解PackageManagerService - **初识PackageManagerService**:概述PackageManagerService的作用,即管理应用的安装、卸载和查询。 - **PKMS的main函数分析**: - **构造函数分析之前期准备工作**:探讨PackageManagerService的启动和初始化过程。 - **构造函数分析之扫描Package**:详细介绍如何扫描和处理APK文件中的应用程序包。 - **构造函数分析之扫尾工作**:讲解Package扫描后的清理和优化步骤。 - **PKMS构造函数总结**:对PackageManagerService构造过程的总结。 - **APK Installation分析**: - **adb install分析**:解释ADB工具安装应用程序的步骤。 - **pm分析**:讲述命令行工具pm(Package Manager)的使用。 - **installPackageWithVerification函数分析**:探讨安装过程中对APK的验证机制。 - **APK 安装流程总结**:概括APK从安装到最终加载的整个流程。 - **Verification介绍**:介绍APK签名验证的必要性和过程。 - **queryIntentActivities分析**: - **Intent及IntentFilter介绍**:解释Intent机制和IntentFilter的作用。 - **Activity信息的管理**:讨论PackageManager如何管理Activity信息。 - **Intent 匹配查询分析**:分析Intent匹配过程中如何查询合适的Activity。 - **queryIntentActivities总结**:对Intent查询机制的总结。 ### 第5章 深入理解PowerManagerService - **初识PowerManagerService**:介绍PMS如何管理设备的电源,例如屏幕、唤醒锁等。 - **PMS构造函数分析**: - **PMS构造函数分析**:详细介绍PowerManagerService的构造过程。 - **init分析**:探讨PMS初始化时的资源准备和配置。 - **systemReady分析**:讨论当系统准备就绪时,PMS如何完成相关设置。 - **BootComplete处理**:解析启动完成后PMS的相关操作。 - **初识PowerManagerService总结**:对PMS功能和工作机制的总结。 - **PMS WakeLock分析**: - **WakeLock客户端分析**:探讨获取和持有唤醒锁的机制。 - **PMS acquireWakeLock分析**:分析PMS如何处理唤醒锁请求。 - **Power类及LightService类介绍**:介绍与电源管理相关的API和服务。 - **WakeLock总结**:对唤醒锁机制的总结。 - **userActivity及Power按键处理分析**: - **userActivity分析**:讲解用户活动如何影响设备的电源状态。 - **Power按键处理分析**:分析物理按键对电源管理的影响。 - **BatteryService及BatteryStatsService分析**: - **BatteryService分析**:探讨电池状态服务的运作方式。 - **BatteryStatsService分析**:详述电池统计服务如何收集和处理电池使用数据。 - **BatteryService及BatteryStatsService总结**:对电池服务功能的总结。 ### 第6章 深入理解ActivityManagerService - **初识ActivityManagerService**:介绍AMS在任务管理和应用进程监控中的关键作用。 - **AMS的 main 函数分析**: - **ActivityManagerService的main函数分析**:解释AMS如何启动和初始化。 - **AMS的 setSystemProcess分析**:讨论AMS如何设置系统进程。 - **AMS的 installSystemProviders函数分析**:探讨AMS如何安装系统级别的服务提供者。 - **AMS的 systemReady分析**:详述系统准备就绪时,AMS进行的各项工作。 - **初识ActivityManagerService总结**:对AMS职责和工作原理的总结。 - **startActivity分析**: - **从am说起**:介绍Activity Manager工具命令行工具的使用。 - **AMS的startActivityAndWait函数分析**:详述AMS如何处理启动Activity的请求。 - **startActivityLocked分析**:探讨AMS在内部如何锁定和处理Activity启动。 - **Broadcast和BroadcastReceiver分析**: - **registerReceiver流程分析**:讲述如何注册和监听广播。 - **sendBroadcast流程分析**:讨论如何发送广播。 - **BROADCAST_INTENT_MSG消息处理函数**:解释系统如何分发和处理广播消息。 - **应用进程处理广播分析**:探讨应用进程如何接收和处理广播。 - **广播处理总结**:对广播机制的总结。 - **startService之按图索骥**: - **Service知识介绍**:解释服务的概念和使用方法。 - **startService流程图**:通过流程图的形式展示startService的步骤和流程。 - **AMS中的进程管理**: - **Linux进程管理介绍**:讨论Linux底层进程管理机制。 - **关于Android中的进程管理的介绍**:解析Android进程管理的特有概念和实现。 - **AMS进程管理函数分析**:详细分析AMS中管理进程的函数和机制。 - **AMS进程管理总结**:总结AMS进程管理的工作原理。 - **App的 Crash处理**: - **应用进程的Crash处理**:介绍AMS如何处理应用崩溃事件。 - **AMS的handleApplicationCrash分析**:探讨AMS在应用崩溃时采取的措施。 - **AppDeathRecipient binderDied分析**:分析AMS如何响应Binder死亡通知。 - **App的Crash处理总结**:对AMS崩溃处理机制的总结。 ### 第7章 深入理解ContentProvider - **MediaProvider的启动及创建**: - **Context的getContentResolver函数分析**:解释如何通过ContentResolver获得ContentProvider实例。 - **MediaStore.Image.Media的query函数分析**:讨论MediaProvider中query方法的工作流程。 - **MediaProvider的启动及创建总结**:对MediaProvider启动和创建过程的总结。 - **SQLite创建数据库分析**: - **SQLite及SQLiteDatabase家族**:介绍SQLite数据库和相关API。 - **MediaProvider创建数据库分析**:详述MediaProvider如何创建和管理数据库。 - **SQLiteDatabase创建数据库的分析总结**:总结数据库创建过程中的关键步骤和特性。 - **Cursor 的query函数的实现分析**: - **提取query关键点**:讲解query方法的核心逻辑和关键参数。 - **MediaProvider 的query分析**:分析MediaProvider中query方法的实现。 - **query关键点分析**:探讨query方法中影响性能和数据处理的关键点。 - **Cursor query实现分析总结**:总结Cursor实现query方法的技术要点。 - **Cursor close函数实现分析**: - **客户端close的分析**:讲解客户端如何关闭Cursor。 - **服务端close的分析**:探讨服务端处理关闭请求的流程。 - **finalize函数分析**:分析Cursor的finalize方法及其意义。 - **Cursor close函数总结**:对Cursor关闭机制的总结。 - **ContentResolver openAssetFileDescriptor函数分析**: - **openAssetFileDescriptor之客户端调用分析**:讲解客户端如何调用openAssetFileDescriptor。 - **ContentProvider的 openTypedAssetFile函数分析**:分析ContentProvider中打开文件描述符的方法。 - **跨进程传递文件描述符的探讨**:探讨跨进程通信时文件描述符的传递机制。 - **openAssetFileDescriptor函数分析总结**:对openAssetFileDescriptor方法的总结。 ### 第8章 深入理解ContentService和AccountManagerService - **数据更新通知机制分析**: - **初识ContentService**:介绍ContentService的作用和它如何管理数据更新通知。 - **ContentResovler 的registerContentObserver分析**:讲解ContentResolver如何注册内容观察者。 - **ContentResolver的 notifyChange分析**:分析通知变化的机制和方法。 - **数据更新通知机制总结和深入探讨**:总结和深入讨论数据更新通知的工作方式。 - **AccountManagerService分析**: - **初识AccountManagerService**:介绍AccountManagerService在账号管理中的角色和功能。 - **AccountManager addAccount分析**:探讨添加账号的流程和机制。 - **AccountManagerService的分析总结**:对AccountManagerService的总结。 - **数据同步管理SyncManager分析**: - **初识SyncManager**:讲解SyncManager的基本概念和作用。 - **ContentResolver 的requestSync分析**:分析如何发起数据同步请求。 - **数据同步管理SyncManager分析总结**:总结SyncManager的同步机制。 ### 总结 《深入理解Android》卷Ⅱ通过详尽的分析和讨论,带领读者深入了解Android系统的工作机制和服务架构。读者通过本书可以系统地掌握从系统源码搭建、进程间通信机制、系统服务管理、应用程序管理到内容提供服务等Android开发和系统知识的核心内容。

相关推荐

filetype
第1章 阅读前的准备工作 1.1 系统架构 1.1.1 Android系统架构 1.1.2 本书的架构 1.2 搭建开发环境 1.2.1 下载源码 1.2.2 编译源码 1.3 工具介绍 1.3.1 Source Insight介绍 1.3.3 Busybox的使用 1.4 本章小结 第2章 深入理解JNI 2.1 JNI概述 2.2 学习JNI的实例:MediaScanner 2.3 Java层的MediaScanner分析 2.3.1 加载JNI库 2.3.2 Java的native函数和总结 2.4 JNI层MediaScanner的分析 2.4.1 注册JNI函数 2.4.2 数据类型转换 2.4.3 JNIEnv介绍 2.4.4 通过JNIEnv操作jobject 2.4.5 jstring介绍 2.4.6 JNI类型签名介绍 2.4.7 垃圾回收 2.4.8 JNI中的异常处理 2.5 本章小结 第3章 深入理解init 3.1 概述 3.2 init分析 3.2.1 解析配置文件 3.2.2 解析service 3.2.3 init控制service 3.2.4 属性服务 3.3 本章小结 第4章 深入理解zygote 4.1 概述 4.2 zygote分析 4.2.1 AppRuntime分析 4.2.2 Welcome to Java World 4.2.3 关于zygote的总结 4.3 SystemServer分析 4.3.1 SystemServer的诞生 4.3.2 SystemServer的重要使命 4.3.3 关于 SystemServer的总结 4.4 zygote的分裂 4.4.1 ActivityManagerService发送请求 4.4.2 有求必应之响应请求 4.4.3 关于zygote分裂的总结 4.5 拓展思考 4.5.1 虚拟机heapsize的限制 4.5.2 开机速度优化 4.5.3 Watchdog分析 4.6 本章小结 第5章 深入理解常见类 5.1 概述 5.2 以“三板斧”揭秘RefBase、sp和wp 5.2.1 第一板斧--初识影子对象 5.2.2 第二板斧--由弱生强 5.2.3 第三板斧--破解生死魔咒 5.2.4 轻量级的引用计数控制类LightRefBase 5.2.5 题外话-三板斧的来历 5.3 Thread类及常用同步类分析 5.3.1 一个变量引发的思考 5.3.2 常用同步类 5.4 Looper和Handler类分析 5.4.1 Looper类分析 5.4.2 Handler分析 5.4.3 Looper和Handler的同步关系 5.4.4 HandlerThread介绍 5.5 本章小结 第6章 深入理解Binder 6.1 概述 6.2 庖丁解MediaServer 6.2.1 MediaServer的入口函数 6.2.2 独一无二的ProcessState 6.2.3 时空穿越魔术-defaultServiceManager 6.2.4 注册MediaPlayerService 6.2.5 秋风扫落叶-StartThread Pool和join Thread Pool分析 6.2.6 你彻底明白了吗 6.3 服务总管ServiceManager 6.3.1 ServiceManager的原理 6.3.2 服务的注册 6.3.3 ServiceManager存在的意义 6.4 MediaPlayerService和它的Client 6.4.1 查询ServiceManager 6.4.2 子承父业 6.5 拓展思考 6.5.1 Binder和线程的关系 6.5.2 有人情味的讣告 6.5.3 匿名Service 6.6 学以致用 6.6.1 纯Native的Service 6.6.2 扶得起的“阿斗”(aidl) 6.7 本章小结 第7章 深入理解Audio系统 7.1 概述 7.2 AudioTrack的破解 7.2.1 用例介绍 7.2.2 AudioTrack(Java空间)分析 7.2.3 AudioTrack(Native空间)分析 7.2.4 关于AudioTrack的总结 7.3 AudioFlinger的破解 7.3.1 AudioFlinger的诞生 7.3.2 通过流程分析AudioFlinger 7.3.3 audio_track_cblk_t分析 7.3.4 关于AudioFlinger的总结 7.4 AudioPolicyService的破解 7.4.1 AudioPolicyService的创建 7.4.2 重回AudioTrack 7.4.3 声音路由切换实例分析 7.4.4 关于AudioPol