《深入理解Android:卷II》.pdf

第1 章 搭建Android 源码工作环境

1.1 Android 系统架构

1.2 搭建开发环境

         1.2.1 下载源码

         //http://source.android.com/source/downloading.html。

 

         1.2.2 编译源码

         1. 部署JDK

         2. 编译源码

 

         1.2.3 利用Eclipse 调试system_process

         1. 配置Eclipse

         2. 使用Coffee Bytes Java 插件

         3. 导入Android 源码

         4. 创建并运行模拟器

         5. 调试system_process

 

第2 章 深入理解Java Binder 和MessageQueue     

2.1 概述

 

 

2.2 Java 层中的Binder 架构分析//建议先阅读读卷I 的“第6 章深入理解Binder”。

         2.2.1 Binder 架构总览:

          

 

         1)系统定义了一个IBinder 接口类以及DeathRecipient 接口

         2)Binder 类和BinderProxy 类分别实现了IBinder ❑ 接口。其中,Binder 类作为服务端的Bn 的代表,而BinderProxy 作为客户端的Bp 的代表。

         3)系统中还定义了一个BinderInternal 类。该类是一个仅供Binder 架构使用的类。它内部有一个GcWatcher 类,该类专门用于处理和Binder 架构相关的垃圾回收

         4)Java 层同样提供一个用于承载通信数据的Parcel 类

 

         2.2.2 初始化Java 层Binder 框架

         frameworks/base/core/jni/android_util_Binder.cpp

          

 

         (1)    Binder类的初始化.

         (2)    BinderInternal类的初始化

         (3)    BinderProxy类的初始化

         主要是注册一些class 的JNI,全局对象变量.

 

 

         2.2.3 addService实列分析//ActivityManagerService

         (1) 在SM 注册服务:

                    

                    

                          

                   BinderInternal.getContextObject

                   1:通过JNI 创建BpProxy,与ServiceManager联系.

                   2:转化成java层的class BinderProxy obj.

                   3:通过asinterface传给 class ServiceManagerProxy类的remote=BinderProxy

 

                          

         (2) addService函数分析://即 调用BinderProxy. addService

                   BinderProxy. addService是native transact函数.

                    

                   调用target是JAVA层BinderProxy 创建的BpBinder

         (3) Binder,JavaBBinderHolder和JavaBBinder

                    

                   1:Binder的mobject 指向JavaBBinderHolder对象

                             

                   2: JavaBBinderHolder的mBinder指向JavaBBinder

                             

                   3:      JavaBBinder的mobject指向Binder 对象.

 

                             

                            通过ServiceManagerProxy->addService中的data->writestrongBinder(Service)中的ibinderforJavaObject中JavaBBinderholder->get

                             

 

                            4:      ActivityManagerService响应请求流程//JavaBBinder的业务函数.

 

                             

 

                            虚线表示子类重载实现.Q:响应的指令从哪里来?

 

         2.2.4 Java 层Binder 架构总结

                             

 

 

 

2.3 心系两界的MessageQueue//卷I“第5 章深入理解常见类

        

         2.3.1 MessageQueue 的创建:

                    MessageQueue.java::MessageQueue

                    通过JNI调用Native中的 new MessageQueue        

         2.3.2 Java层投递Message:

                   MessageQueue.java::enqueueMessage()

                   nativeWake 控制是否唤醒

         2.3.3 MessageQueue 提取消息:

                   MessageQueue.java::next()

                   通过JNI调用Native中nativePollOnce

         2.3.4 nativePollOnce 函数分析//实际就是一个多路复用IO epoll

                   1: 计算真正等待的时间

                   2:调用 epoll_wait

                   3:处理文件句柄,或fd 发生的事情

                   4:调用native Message处理函数,处理response数组中callback函数.

         2.3.5 添加监控请求:

                          

         2.3.6 处理监控请求:

                   nativePollOnce中:

                   3:处理文件句柄,或fd 发生的事情

                   4:调用native Message处理函数,处理response数组中callback函数.

         2.3.6 native层sendMessage:

                    

 

        

2.4 MessageQueue 总结

         2.4.1 消息处理的大家族合照

                

         (1):   Java 层提供了Looper 类和MessageQueue 类❑ ,其中Looper 类提供循环处理消息的机制,MessageQueue 类提供一个消息队                            列,以及插入、删除和提取消息的函数接口。另外,Handler 也是在Java 层常用的与消息处理相关的类。

         (2):   MessageQueue 内部通过mPtr 变量保存一个Nati

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深入理解Android2》是一本以情景方式对Android的源代码进行深入分析的书。内容广泛,以对Framework层的分析为主,兼顾Native层和Application层;分析深入,每一部分源代码的分析都力求透彻;针对性强,注重实际应用开发需求,书中所涵盖的知识点都是Android应用开发者和系统开发者需要重点掌握的。 全书共10章,第1章介绍了阅读本书所需要做的准备工作,主要包括对Android系统架构和源码阅读方法的介绍;第2章通过对Android系统中的MediaScanner进行分析,详细讲解了Android中十分重要的JNI技术;第3章分析了init进程,揭示了通过解析init.rc来启动Zygote以及属性服务的工作原理;第4章分析了Z ygote、SystemServer等进程的工作机制,同时还讨论了Android的启动速度、虚拟机HeapSize的大小调整、Watchdog工作原理等问题;第5章讲解了Android系统中常用的类,包括sp、wp、RefBase、Thread等类,同步类,以及Java中的Handler类和Looper类,掌握这些类的知识后方能在后续的代码分析中做到游刃有余;第6章以MediaServer为切入点,对Android中极为重要的Binder进行了较为全面的分析,深刻揭示了其本质。第7章对Audio系统进行了深入的分析,尤其是AudioTrack、AudioFlinger和AudioPolicyService等的工作原理。第8章深入讲解了Surface系统的实现原理,分析了Surface与Activity之间以及Surface与SurfaceFlinger之间的关系、SurfaceFlinger的工作原理、Surface系统中的帧数据传输以及LayerBuffer的工作流程。第9章对Vold和Rild的原理和机制进行了深入的分析,同时还探讨了Phone设计优化的问题;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值