1,请看某个著名的it公司一则招聘信息的其中一条要求:“熟悉android系统架构及相关技术,1年以上实际android平台开发经验;”,里面非常明确的说道要求熟练android系统架构,这从某种程度上说明了对android体系架构的理解的重要性,下面我们看看android体系结构图,该图源自android的文档:
很明显,上图包含四个主要的层次:
linuxkernel:负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。
libraries和androidruntime:libraries:即c/c++函数库部分,大多数都是开放源代码的函数库,例如webkit,该函数库负责android网页浏览器的运行,例如标准的c函数库libc、openssl、sqlite等,当然也包括支持游戏开发2dsgl和3dopengles,在多媒体方面有mediaframework框架来支持各种影音和图形文件的播放与显示,例如mpeg4、h.264、mp3、aac、amr、jpg和png等众多的多媒体文件格式。android的runtime负责解释和执行生成的dalvik格式的字节码。
applicationframework(应用软件架构),java应用程序开发人员主要是使用该层封装好的api进行快速开发。
applications:该层是java的应用程序层,android内置的googlemaps、e-mail、即时通信工具、浏览器、mp3播放器等处于该层,java开发人员开发的程序也处于该层,而且和内置的应用程序具有平等的位置,可以调用内置的应用程序,也可以替换内置的应用程序。
上面的四个层次,下层为上层服务,上层需要下层的支持,调用下层的服务,这种严格分层的方式带来的极大的稳定性、灵活性和可扩展性,使得不同层的开发人员可以按照规范专心特定层的开发。
android应用程序使用框架的api并在框架下运行,这就带来了程序开发的高度一致性,另一方面也告诉我们,要想写出优质高效的程序就必须对整个applicationframework进行非常深入的理解。精通applicationframework,你就可以真正的理解android的设计和运行机制,也就更能够驾驭整个应用层的开发。
2,android的官方建议应用程序的开发采用mvc模式。何谓mvc?先看看下图
mvc是model,view,controller的缩写,从上图可以看出mvc包含三个部分:
l模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。
l视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。
l控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新model对象状态的部分,控制器更重要的一种导航功能,想用用户出发的相关事件,交给m哦得了处理。
android鼓励弱耦合和组件的重用,在android中mvc的具体体现如下:
1)视图层(view):一般采用xml文件进行界面的描述,使用的时候可以非常方便的引入,当然,如何你对android了解的比较的多了话,就一定可以想到在android中也可以使用javascript+html等的方式作为view层,当然这里需要进行java和javascript之间的通信,幸运的是,android提供了它们之间非常方便的通信实现。
2)控制层(controller):android的控制层的重任通常落在了众多的acitvity的肩上,这句话也就暗含了不要在acitivity中写代码,要通过activity交割model业务逻辑层处理,这样做的另外一个原因是android中的acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。
3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。
3,设计模式和ioc(控制反转)
毫无疑问,android的之所以能够成为一个开放的气象万千的系统,与设计模式的精妙应用是分不开的,只要你稍微用心观察,就会发现在android中到处都是a设计模式或者设计模式的联合运用,一下的设计模式是您想游刃有余的驾驭android必须掌握的:
ltemplatemethod模式
lfactorymethod模式
lobserver模式
labstractfactory模式
ladapter模式
lcomposite模式
lstrategy模式
lstate模式
lproxy模式
lbridge模式
literator模式
lmediator模式
lfa?ade模式
android框架魅力的源泉在于ioc,在开发android的过程中你会时刻感受到ioc带来的巨大方便,就拿activity来说,下面的函数是框架调用自动调用的:
protectedvoidoncreate(bundlesavedinstancestate);
不是程序编写者主动去调用,反而是用户写的代码被框架调用,这也就反转了!当然ioc本身的内涵远远不止这些,但是从这个例子中也可以窥视出ioc带来的巨大好处。此类的例子在android随处可见,例如说数据库的管理类,例如说android中sax的handler的调用等。有时候,您甚至需要自己编写简单的ioc实现,上面展示的多线程现在就是一个说明。
分享到:
相关推荐
asp.net mvc4 最新学习控制反转 新机制 IoC 学习 提供高效方便的开发
Mvc+IOC 、多层架构Mvc+IOC 、多层架构Mvc+IOC 、多层架构
首先我们来吹吹牛,什么叫IoC,控制反转(Inversion of Control,英文缩写为IoC),什么意思呢? 就是你一个类里面需要用到很多个成员变量,传统的写法,你要用这些成员变量,那么你就new 出来用呗~~ IoC的原则是:...
Autofac Ioc C# Demo 控制反转 简单例子,控制反转 ,使程序更容易些换接口,易扩展。
Spring IOC 控制反转简单过程 1: 导入需要报 2:构建spring的配合文件 3: 将我们创建的类交给spring容器管理 4: 实例化容器 5: 从容器中获取实例
基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)...
Ioc(控制反转)的C#例子,包括相关的例子源码
spring IOC控制反转 spring IOC控制反转 spring IOC控制反转
NULL 博文链接:https://ysj5125094.iteye.com/blog/1606928
Android 设计模式 示例集合 以及IOC注解事例 Demo
本文介绍了Spring框架中的控制反转IOC和依赖注入DI,欢迎阅读,共同学习,一起进步。 Spring框架基础参考:深入学习Spring基础 文章目录一.入门程序和IOC简介二.IOC-控制反转三.DI-依赖注入四. IOC和DI五.Spring...
控制反转IOC(Inversion of Control)是一种设计思想,DI(依赖注入)是实现IOC的一种方法 。在没有IOC的程序中,我们使用面向对象编程,对象的创建于对象间的依赖完全硬编码在程序中,对象的创建有程序自己控制;...
IOC控制反转在代码中体现.
本文文档中有 控制反转 DI依赖注入,希望可以给大家在技术上有一点的帮助
详细讲解ioc控制反转机制,供大家深入了解ioc机制
.net mvc IOC的介绍以及IOC思想的实现原理——>依赖注入(DI)
spring ioc控制反转简单测试代码
Spring框架学习中的核心,控制反转IOC,理解Spring框架主要注入所依赖的资源,解耦开发
spring技术--IOC控制反转课件.ppt