android技术内幕心得
这本书开头就介绍了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技术内幕-应用卷,对于长期从事应用开发的我来讲,或许这是更好地选择吧(其实是系统篇我看不懂),不过系统篇让我接触了许多底层的知识,包括内存、虚拟机这部分,都让我感到获益匪浅。
更多相关文章
- Android(安卓)error: adb 端口被占用 (adb.exe,start-server' fa
- Android基于XMPP Smack Openfire开发IM【三】客户端接收服务器发
- Android(安卓)Messenger IPC 通信
- wheelView自定义android日期时间选择器
- android实现异步下载过程
- Android(安卓)服务器连接工具类HttpUtil
- Android(安卓)判断程序前后台状态
- android ion 内存泄漏排查
- Android(安卓)8.0 前台服务