《Android系统优化从入门到精通》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:胡郁等编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2015
  • ISBN:9787111516163
  • 页数:467 页
图书介绍:全书分为12章,第1章是Android概述,第2章是工欲善其事、必先利其器,第3章是为什么需要优化,第4章是UI布局优化,第5章是Android的内存系统,第6章是Android的内存优化,第7章是=代码优化,第8章是性能优化,第9章是系统优化,第10章是优化工具,第11-12章是综合实例部分,通过2个综合实例讲解了优化大型Androd程序的基本流程。

第一篇 基础知识篇 1

第1章 Android系统介绍 1

1.1 智能手机系统介绍 1

1.1.1 什么是智能手机 1

1.1.2 主流智能系统的发展现状 2

1.2 Android系统的发展现状 3

1.2.1 Android系统的诞生和发展现状 3

1.2.2 常见的Android设备 4

1.2.3 Android系统的巨大优势 6

1.3 搭建Android应用开发环境 7

1.3.1 安装Android SDK的系统要求 7

1.3.2 安装JDK 8

1.3.3 获取并安装Eclipse和Android SDK 11

1.3.4 安装ADT 14

1.3.5 设定Android SDK Home 16

1.3.6 验证开发环境 17

1.3.7 创建Android虚拟设备(AVD) 18

1.3.8 启动AVD模拟器 21

1.4 创建第一个Android程序 23

第2章 获取并编译Android源码 28

2.1 获取Android源码 28

2.1.1 在Linux系统获取Android源码 28

2.1.2 在Windows平台获取Android源码 29

2.2 分析Android源码结构 32

2.3 编译Android源码 33

2.3.1 搭建编译环境 34

2.3.2 开始编译 35

2.3.3 在模拟器中运行 36

2.3.4 常见的错误分析 37

2.3.5 实践演练——两种编译Android程序的方法演示 38

第二篇 核心技术篇 43

第3章 分析内存系统 43

3.1 分析Android的进程通信机制 43

3.1.1 Android的进程间通信(IPC)机制Binder 43

3.1.2 Binder机制的上下文管理者——Service Manager 44

3.1.3 Service Manager服务 64

3.2 匿名共享内存子系统详解 67

3.2.1 基础数据结构 67

3.2.2 初始化处理 68

3.2.3 打开匿名共享内存设备文件 70

3.2.4 内存映射 72

3.2.5 读写操作 74

3.2.6 锁定和解锁 76

3.2.7 回收内存块 82

3.3 C++访问接口层详解 83

3.3.1 接口MemoryHeapBase 83

3.3.2 接口MemoryBase 92

3.4 Java访问接口层详解 96

第4章 Android内存优化 100

4.1 Android内存优化的作用 100

4.2 查看Android内存和CPU使用情况 101

4.2.1 利用AndroidAPI函数查看内存 101

4.2.2 直接对Android文件进行解析查询 101

4.2.3 通过Runtime类实现 102

4.2.4 使用DDMS工具获取 102

4.2.5 其他方法 107

4.3 Android系统的内存泄露 110

4.3.1 什么是内存泄漏 110

4.3.2 为什么会发生内存泄露 111

4.3.3 shallow size和retained size 112

4.3.4 查看Android内存泄露的工具 113

4.3.5 查看Android内存泄露的方法 116

4.3.6 Android(Java)编码时的注意事项 118

4.4 常见的引起内存泄露的陋习 119

4.4.1 查询数据库时忘记关闭游标 119

4.4.2 构造Adapter时不习惯使用缓存的convertView 120

4.4.3 没有及时释放对象的引用 121

4.4.4 不在使用Bitmap对象时调用recycle()释放内存 122

4.5 演练解决内存泄露 122

4.5.1 使用MAT根据heap dump分析Java代码内存泄漏的根源 123

4.5.2 演练Android中内存泄露代码优化及检测 130

4.6 Android图片的内存优化 132

第5章 UI布局优化 134

5.1 和布局相关的组件 134

5.1.1 View视图组件 134

5.1.2 ViewGroup容器 134

5.2 Android中的五种布局方式 135

5.2.1 线性布局LinearLayout 135

5.2.2 框架布局FrameLayout 136

5.2.3 绝对布局AbsoluteLayout 137

5.2.4 相对布局RelativeLayout 137

5.2.5 表格布局TableLayout 139

5.3 使用<merge/>标签优化UI界面 140

5.3.1 注意事项 140

5.3.2 具体实现 140

5.4 优化Bitmap图片 143

5.4.1 显示一副图片 143

5.4.2 获取图片的宽度和高度 143

5.5 FrameLayout布局优化 145

5.5.1 使用<merge/>减少视图层级结构 146

5.5.2 使用<include/>重用layout代码 147

5.5.3 延迟加载 149

5.6 使用Android提供的优化工具 150

5.6.1 Layout Optimization工具 150

5.6.2 Hierarchy Viewer工具 153

5.6.3 联合使用<merge/>和<include/>标签实现互补 155

第6章 优化代码性能 160

6.1 编写更高效的Android代码 160

6.1.1 避免建立对象 160

6.1.2 优化方法调用代码 162

6.1.3 优化代码变量 163

6.1.4 优化代码过程 166

6.1.5 提高Cu.rsor查询数据的性能 169

6.1.6 编码中尽量使用ContentProvider共享数据 169

6.2 Android控件的性能优化 174

6.2.1 ListView控件的代码优化 174

6.2.2 Adapter(适配器)优化 178

6.2.3 ListView异步加载图片优化 181

6.3 优化Android图形 186

6.3.1 2D绘图的基本优化 186

6.3.2 触发屏幕图形触摸器的优化 186

6.3.3 SurfaceView绘图覆盖刷新及脏矩形刷新方法 187

6.4 资源存储优化 193

6.4.1 Android文件存储 193

6.4.2 Android中的资源存储 195

6.4.3 Android资源的类型和命名 198

6.4.4 Android文件资源(raw/data/asset)的存取 198

6.4.5 Android对Drawable对象的优化 200

6.4.6 建议使用Drawable,而不是Bitmap 202

6.5 加载APK文件和DEX文件 205

6.5.1 APK文件介绍 207

6.5.2 DEX文件介绍和优化 208

6.5.3 Android类动态加载技术实现加密优化 208

第三篇 Dalvik虚拟机优化篇 212

第7章 Dalvik虚拟机垃圾收集机制 212

7.1 引用计数算法 212

7.2 Mark Sweep算法 212

7.3 和垃圾收集算法有关的函数 214

7.4 垃圾回收的时机 234

7.5 调试信息 236

7.6 Dalvik虚拟机和JVM垃圾收集机制的区别 236

第8章 Dalvik虚拟机内存优化机制 239

8.1 sp和wp简介 239

8.1.1 sp基础 239

8.1.2 wp基础 240

8.2 智能指针详解 241

8.2.1 智能指针基础 242

8.2.2 轻量级指针 243

8.2.3 强指针 245

8.2.4 弱指针 257

第9章 Dalvik虚拟机异常处理 261

9.1 Java异常处理机制 261

9.1.1 方法调用栈 261

9.1.2 Java提供的异常处理类 263

9.2 Java虚拟机异常处理机制详解 264

9.2.1 Java语言及虚拟机的异常处理机制 265

9.2.2 COSIX虚拟机异常处理的设计与实现 265

9.3 分析Dalvik虚拟机异常处理的源码 269

9.3.1 初始化虚拟机使用的异常Java类库 269

9.3.2 抛出一个线程异常 270

9.3.3 持续抛出进程 271

9.3.4 找出异常原因 272

9.3.5 清除挂起的异常和等待初始化的异常 276

9.3.6 解决“现在等待”异常 276

9.3.7 输出跟踪当前异常的错误信息 277

9.3.8 搜索和当前异常相匹配的方法 278

9.3.9 获取匹配的捕获块 279

9.3.10 进行堆栈跟踪 280

9.3.11 生成堆栈跟踪元素 282

9.3.12 将内容添加到堆栈跟踪日志中 283

9.3.13 将异常日志信息输出为堆栈跟踪信息 284

9.4 常见异常的类型与原因 284

9.4.1 SQLException:操作数据库异常类 285

9.4.2 ClassCastException:数据类型转换异常 285

9.4.3 NumberFormatException:字符串转换为数字类型时抛出的异常 285

9.5 调用堆栈跟踪分析异常 286

9.5.1 解决段错误 286

9.5.2 跟踪Android Callback调用堆栈 289

第10章 JIT编译 294

10.1 JIT简介 294

10.1.1 JIT概述 294

10.1.2 Java虚拟机主要的优化技术 296

10.1.3 Dalvik中JIT的实现 296

10.2 Dalvik虚拟机对JIT的支持 296

10.3 汇编代码和改动 298

10.3.1 汇编部分代码 298

10.3.2 对C文件的改动 298

10.4 Dalvik虚拟机中的JIT源码 299

10.4.1 入口文件 299

10.4.2 核心函数 310

10.4.3 编译文件 313

10.4.4 BasicBlock处理 322

10.4.5 内存初始化 323

10.4.6 对JIT源码的总结 326

第11章 ART优化之启动过程 328

11.1 运行环境的转换 328

11.2 运行app_process进程 329

11.3 准备启动 333

11.4 创建运行实例 340

11.5 注册本地JNI函数 342

11.6 启动守护进程 343

11.7 解析参数 344

11.8 初始化类、方法和域 352

第12章 ART优化之执行主程序 359

12.1 进入main主函数 359

12.2 查找目标类 361

12.2.1 函数LookupClass() 361

12.2.2 函数DefineClass() 364

12.2.3 函数InsertClass() 368

12.2.4 函数LinkClass() 369

12.3 类操作 371

12.4 实现托管操作 373

第13章 ART优化之安装APK准备 380

13.1 PackageManagerService概述 380

13.2 主函数main 380

13.3 调用初始化函数 381

13.4 创建PackageManagerService服务 384

13.5 扫描并解析 386

13.6 保存解析信息 405

第14章 ART优化之安装APK应用程序 408

14.1 Android安装APK概述 408

14.2 启动时安装 408

14.3 ART安装 420

14.4 实现dex2oat转换 426

14.4.1 参数解析 427

14.4.2 创建oat文件指针 429

14.4.3 dex2oat准备工作 430

14.4.4 提取classes.dex文件 431

14.4.5 创建oat文件 438

14.5 APK文件的转换 439

第15章 系统优化 441

15.1 基本系统优化 441

15.1.1 刷机重启 441

15.1.2 刷内核 442

15.1.3 精简内置应用 442

15.1.4 基本系统优化总结 444

15.2 进程管理 444

15.2.1 Android进程跟Windows进程是两回事 445

15.2.2 查看当前系统中正在运行的程序 445

15.2.3 枚举Android系统的进程、任务和服务的信息 449

15.2.4 研究Android进程管理器的实现 455

15.3 将Android软件从手机内存转移到存储卡 460

15.3.1 第一步:准备工作 460

15.3.2 第二步:存储卡分区 463

15.3.3 第三步:将软件移动到SD卡 463

15.4 常用的系统优化工具 465

15.4.1 优化大师 465

15.4.2 360优化大师 466