一直使用delphi,从大学到工作,一直依靠控件,当现在控件越来越少的时候发现自己
像刚毕业的学生,什么都不会,从两条路选择,一个是从头学delphi,要么继续用控件,从
头学就要从最开始的底层学习,消息啊,线程啊,流的,等等可是delphi的路现在是越走
越窄,一般的公司也都是停留在维护阶段了,既然要下决心从头学起,那么为什么不学一
个新的技术呢,那么就学自己喜欢的移动设备吧,Android可是个好东西,开源,免费,
从现在开始记录学习过程吧。
Android从系统架构
Android从系统架构上来说总共分为五个层,依次是应用程序层,应用程序框架层,系统运
行库层,Linux内核层。
1、应用程序层
一些基本的功能就在这个里,比如主界面,短信,日历,地图等等,他需要
应用程度框架层的支持也可以使用JAVA通过JNI方式,那么什么是JNI呢,
JNI(java Native Interface) java的本地调用,百度是这么说的估计是为了调用
底层的C/C++语言,谁让JAVA太高层了呢。
2、应用程序框架层
这个层就为了开发人员写应用程序所使用的API框架,封装了大多数的功能,
比如活动管理器,窗口管理器视图系统等等,硬件的就有电话拨打,地图服务,
蓝牙,USB,传感器等等
3、系统运行库层
这层就比较底层了,分为两部分,一个呢程序库,为应用程序框架层提供服务,
比如什么数据库,2D3D的图形引擎图片和字体的显示,浏览器的支持等等,
另一个就是运行时库,分为核心库和虚拟机,培训的时候说在电脑上为了适应
跨平台而产生了虚机机,到手机上就从底层支持了JAVA,支持是支持了,
怎么还存在虚机机,反正这里是不太了解了。
4、Linux层 如内存管理,进程,驱动模块,网络栈,都在这里,存在于软件和硬件之间,
硬件时钟,内存分配,Kernel调试,日志,电源管理
金山电源管理那软件是不是就在这里写的?IPC机制(进程间通信)
Android初始化流程
1、开机 - Linux Kernel - Init
2、初始化后呢会产生两个进程,一个是守护进程,一个是Zygote进程,感觉像一个是管理硬件的,一个是管理软件的
3、守护进程会开启四个守护进程,1、USB守护进程,2、Android Debug Bridge守护进程来管理ADB连接,
3、Debug守护进程,4、无线接口守护进程
4、Zygote会初始化一个Dalvik虚拟机实例,装载监听,管理应用程序的进程
5、然后初始化Runtime进程,有两个操作,初始化服务管理器和注册服务管理器,然后发送一个请求到Zygote,开启系统
服务,那边就建立了个虚拟机的实例,开启系统服务
6、以后的事好像就是从虚拟机开始了,启动原生系统服务,SurfaceFlinger和AudioFlinger注册到服务管理器作为IPC服务的目标
7、系统服务将启动android管理服务,都被注册到服务器管理器上
8、最后所有服务都处于等待状态,等待程序运行。
今天到这里,再学再写。
主要就是Android的系统结构和初始化流程。