这本书开头就介绍了android的初始化过程

执行流程是这样的

--Linux基础系统,

--Linux Kernel(linux内核)

--Init(初始化进程) --(同时启动)Zygote(进程)

--daemons(守护进程) --初始化Dalvik虚拟机实例

--usbd(USB守护进程) --装载Socket请求所需的类和监听

--adbd(adb守护进程) --创建虚拟机实例来管理应用程序的进程

--rild(无线守护进程)


接着

--runtime(初始化runtime进程)

--初始化服务管理器(ServideManager)

--注册服务管理器,并作为默认Binder服务的Context管理器

--runtime--初始化完成后发送请求到Zygote-->由Zygote为系统服务进程建立虚拟机实例并启动系服务(其实这里应该先启动Dalvik VM的吧—_—)(System Server)


接着

系统服务启动原生服务(主要是:Surface Flinger 和 Audio Flinger)

并注册到服务管理器(Service Manager)以作为IPC服务的对象

然后

系统服务再启动 Android 管理服务,Android 管理服务被注册到服务管理器上(即Service Manager)

系统将所有的服务都加载到Service Manager(所有服务都加载完)后,就处于等待状态了,这个等待状态具体是怎样的我不是很清楚,也许书本后面会讲解到吧

总之,现在这个状态已经可以运行应用程序了,每一个应用程序都将被分配一个单独的进程,如果不通进程之间需要通信,可以使用IPC机制(以后会补充)


总结

这篇博文是我自己对《Android技术内幕--系统卷》的第一节android启动知识的总结,主要是将Android启动流程用文字的形式表达了出来,这本书我会继续看下去,所以这篇博文我也只是写了个开头而已,如果有前辈能屈尊指点一二,我将不胜感激!

____________________________________________________________________________________

简单理解android 系统层通过Binder机制与其他进程通信的原理,Binder机制类似于CS架构,即客户端和服务器

服务器在向ServiceManager注册后就可以提供ipc服务了

通信过程:

1、客户端首先建立一个进程代理对象

2、客户端将请求发送到代理对象上

3、代理对象通过Binder驱动将请求转发给服务器

4、服务器处理...

5、服务器将处理结果通过Binder传回给代理对象

6、客户端从代理对象获取结果

7、结束

————————————————————————————————————————————————————

今天大致浏览了这本书,感觉大部分都是在讲android框架中HAL层的实现,后来才发现,这本书还有一部姊妹版,叫做Android技术内幕-应用卷,对于长期从事应用开发的我来讲,或许这是更好地选择吧(其实是系统篇我看不懂),不过系统篇让我接触了许多底层的知识,包括内存、虚拟机这部分,都让我感到获益匪浅。






更多相关文章

  1. Android(安卓)error: adb 端口被占用 (adb.exe,start-server' fa
  2. Android基于XMPP Smack Openfire开发IM【三】客户端接收服务器发
  3. Android(安卓)Messenger IPC 通信
  4. wheelView自定义android日期时间选择器
  5. android实现异步下载过程
  6. Android(安卓)服务器连接工具类HttpUtil
  7. Android(安卓)判断程序前后台状态
  8. android ion 内存泄漏排查
  9. Android(安卓)8.0 前台服务

随机推荐

  1. Android(安卓)NuPlayer播放框架
  2. android 横竖屏切换生命周期详解
  3. android安全:Android对开机自启动的限制
  4. NDK使用log的问题
  5. Android(安卓)开发TCP、UdP客户端
  6. 导航标签使用
  7. audio的输出设备切换分析
  8. okhttp3的基本使用
  9. android webview 加载本地文件
  10. Android(安卓)unZip