Android 的系统架构
Android和其他系统一样,采用了层级分明的分层架构,主要分为四层 应用层,应用架构层,系统运营层,Liunx内核层!
1.应用层(Applications)由运行在Dalvik虚拟机上的APP组成,该虚拟机由Google为android专门设计的,运行速度比jvm虚拟机更快,以此来克服移动设备在内存,处理器速率上面的不足,也可以这么说Dalvik就是基于Jvm为基础研发的。该层语言由java编写!而我们的android开发人员大部分做得就是android应用层的开发!
2.应用程序框架层(FromWork)(这里说的不包括第三方框架),本层是由google开发,提供给开发人员直接调用的API,编写语言大部分是java,也有少量的C/C++;
3.系统运行层(Native):我们的设备需要运行,必然要和底层的硬件进行交互,而系统运行层执行的就是这样的操作。我们调用了框架层,然后框架层于系统运行层在做交互,系统运行层通过C和C++语言实现的一些本地服务或链接库来调用相应硬件的驱动程序!这一层有一个特点就是通过C和C++实现,这样避免了java实现效率较低的问题!
4.Liunx内核层,该层主要包括:驱动、内存管理、进程管理、网络协议等组件,但是貌似我们目前大部分开发者,使用网络协议什么的,都是使用应用程序框架层或者一些第三方的jar为我们提供的网络请求,很少有人去钻研网络协议,驱动什么的!这样很不好,你至少也要知道他是怎么实现的嘛!(虽然我也没有研究过,不过以后希望和大家一起共同学习进步)
可能说了半天大家还是一脸蒙蔽,说你这说的都是什么啊,看了半天似懂非懂的,没关系,下面给大家提供一个相机的调用流程!
上图:我们可以看出从用户在点击了系统相机,之后发生的一系列流程!
- 用户点击
- 应用层通过调用框架层提供的Camear(摄像头管理类) 使用这个类构建一个相机应用程序。(代用方法)Intent intent = new Intent();
intent.setAction(“android.media.action.STILL_IMAGE_CAMERA”);
startActivity(intent); - 框架层调用系统运行层的媒体库,框架层做得那些操作在这就不细讲了(有兴趣的朋友可以看一下Android APIs)
- 运行层告诉Liunx内核快把相机打开,驱动程序检测相机状态是正常,相机说没毛病,老铁,然后就把相机打开了!(额,开个小玩笑)至此,相机就可以正常的使用了!
嗯!唔!这个大概就是android的系统架构了,至于哪层架构在那一步处理了什么操作,会在后面几篇文章讲解清楚!