|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如果你对iPhoneDevelopment有兴趣,以下是入门门槛供参考:首先你要有一台Mac电脑(因为iPhoneApp使用Mac平台内建的Xcode开发工具),网上也有在Windows下搭设开发环境的教程,请大家自行谷歌一下,Android体系承继了Linux开源操纵体系的平安特征,并接纳了条理化的体例来包管体系平安,本文将具体先容Android条理化平安架构及其中心组件。
Android条理化平安架构
Android作为一个挪动设备的平台,其软件条理布局包含了一个操纵体系(OS),两头件(MiddleWare)和使用程序(Application)。依据Android的软件框图,其软件条理布局自下而上分为以下几个条理:
- 操纵体系层(OS)
- 各类库(Libraries)和Android运转情况(RunTime)
- 使用程序框架(ApplicationFramework)
- 使用程序(Application)
以下分离先容Android各个条理的软件的重点及其相干手艺:
(1)操纵体系层(OS)
Android利用Linux2.6作为操纵体系,Linux2.6是一种尺度的手艺,Linux也是一个开放的操纵体系。Android对操纵体系的利用包含中心和驱动程序两部分,Android的Linux中心为尺度的Linux2.6内核,Android更多的是必要一些与挪动设备相干的驱动程序。次要的驱动以下所示:
- 显现驱动(DisplayDriver):经常使用基于Linux的帧缓冲(FrameBuffer)驱动
- Flash内存驱动(FlashMemoryDriver)
- 拍照机驱动(CameraDriver):经常使用基于Linux的v4l(Videofor)驱动。
- 音频驱动(AudioDriver):经常使用基于ALSA(AdvancedLinuxSoundArchitecture,初级Linux声响系统)驱动
- WiFi驱动(CameraDriver):基于IEEE802.11尺度的驱动程序
- 键盘驱动(KeyBoardDriver)
- 蓝牙驱动(BluetoothDriver)
- BinderIPC驱动:Andoid一个特别的驱动程序,具有独自的设备节点,供应历程间通信的功效。
- PowerManagement(动力办理)
(2)各类库(Libraries)和Android运转情况(RunTime)
本条理对应一样平常嵌进式体系,相称于两头件条理。Android的本条理分红两个部分一个是各类库,另外一个是Android运转情况。本层的内容年夜多是利用C++完成的。在个中,各类库包含:
- C库:C言语的尺度库,这也是体系中一个最为底层的库,C库是经由过程Linux的体系挪用来完成。
- 多媒体框架(MediaFrameword):这部份内容是Android多媒体的中心部分,基于PacketVideo(即PV)的OpenCORE,从功效上本库一共分为两年夜部分,一个部分是音频、视频的回放(PlayBack),另外一部分是则是音视频的记录(Recorder)。
- SGL:2D图象引擎。
- SSL:即SecureSocketLayer位于TCP/IP协定与各类使用层协定之间,为数据通信供应平安撑持。
- OpenGLES1.0:本部分供应了对3D的撑持。
- 界面办理工具(SurfaceManagement):本部分供应了对办理显现子体系等功效。
- SQLite:一个通用的嵌进式数据库
- WebKit:收集扫瞄器的中心
- FreeType:位图和矢量字体的功效。
Android的各类库通常为以体系两头件的情势供应的,它们均有的一个明显特性就是与挪动设备的平台的使用亲切相干。Android运转情况次要指的假造机手艺——Dalvik。Dalvik假造机和一样平常Java假造机(JavaVM)分歧,它实行的不是Java尺度的字节码(bytecode)而是Dalvik可实行格局(.dex)中实行文件。在实行的过程当中,每个使用程序即一个历程(Linux的一个Process)。两者最年夜的区分在于JavaVM是以基于栈的假造机(Stack-based),而Dalvik是基于存放器的假造机(Register-based)。明显,后者最年夜的优点在于能够依据硬件完成更年夜的优化,这更合适挪动设备的特性。
(3)使用程序框架(ApplicationFramework)
Android的使用程序框架为使用程序层的开辟者供应APIs,它实践上是一个使用程序的框架。因为下层的使用程序是以JAVA构建的,因而本条理供应的起首包括了UI程序中所必要的各类控件:比方:Views(视图组件)包含lists(列表),grids(栅格),textboxes(文本框),buttons(按钮)等,乃至一个嵌进式的Web扫瞄器。一个Android的使用程序能够使用使用程序框架中的以下几个部分:Activity(举动)、BroadcastIntentReceiver(播送企图吸收者)、Service(服务)、ContentProvider(内容供应者)。
(4)使用程序(Application)
Android的使用程序次要是用户界面(UserInterface),一般以JAVA程序编写,个中还能够包括各类资本文件(安排在res目次中)。JAVA程序及相干资本经由编译后,将天生一个APK包。Android自己供应了主屏幕(Home),接洽人(Contact),德律风(Phone),扫瞄器(Browsers)等浩瀚的中心使用。同时使用程序的开辟者还可使用使用程序框架层的API完成本人的程序。
<br>
Android分层平安架构图
Android的组件模子(ComponentModel)
Android体系中包含以下4种组件:
(1)Activity
Activity就是一个界面,这个界面内里能够安排各类控件。比方:TaskManager的界面、RootExplorer的界面等;Activity是为用户操纵而展现的可视化用户界面。比方说,一个activity能够展现一个菜单项列表供用户选择,大概显现一些包括申明的照片。一个短动静使用程序能够包含一个用于显现做为发送对象的接洽人的列表的activity,一个给选定的接洽人写短信的activity和翻阅之前的短信和改动设置的activity。只管它们一同构成了一个内聚的用户界面,但个中每一个activity都与别的的坚持自力。每一个都是以Activity类为基类的子类完成。
一个使用程序能够只要一个activity,大概,如方才提到的短信使用程序那样,包括良多个。而每一个activity的感化和其数量,天然取决于使用程序及其计划。一样平常情形下,总有一个使用程序被标志为用户在使用程序启动的时分第一个看到的。从一个activity转向另外一个的体例是靠以后的activity启动下一个。
每一个activity都被赐与一个默许的窗口以举行绘制。一样平常情形下,这个窗口是满屏的,但它也能够是一个小的位于别的窗口之上的浮动窗口。一个activity也能够利用凌驾一个的窗口。比方,在activity运转过程当中弹出的一个供用户反响的小对话框,或是当用户选择了屏幕上特定项目后显现的需要信息。
窗口显现的可视内容是由一系列视图组成的,这些视图均承继自View基类。每一个视图均把持着窗口中一块特定的矩形空间。父级视图包括并构造它子视图的结构。叶节点视图(位于视图条理最底端)在它们把持的矩形中举行绘制,并对用户对其间接操纵做出呼应。以是,视图是activity与用户举行交互的界面。比方说,视图能够显现一个小图片,并在用户指导它的时分发生举措。Android有良多既定的视图供用户间接利用,包含按钮、文本域、卷轴、菜单项、复选框等等。
(2)Service
服务是运转在背景的功效模块。如文件下载、音乐播放程序等;服务没有可视化的用户界面,而是在一段工夫内涵背景运转。比方说,一个服务能够在用户做别的事变的时分在背景播放背景音乐、从收集上猎取一些数据大概盘算一些工具并供应给必要这个运算了局的activity利用。每一个服务都承继自Service基类。
一个媒体播放器播放播放列表中的曲目是一个不错的例子。播放器使用程序大概有一个或多个activity来给用户选择歌曲并举行播放。但是,音乐播放这个义务自己不该该为任何activity所处置,由于用户希冀在他们分开播放器使用程序而入手下手做其余事变时,音乐仍在持续播放。为到达这个目标,媒体播放器activity应当启用一个运转于背景的服务。而体系将在这个activity不再显现于屏幕以后,仍保持音乐播放服务的运转。
能够毗连至(绑定)一个正在运转的服务(假如服务没有运转,则启动之)。毗连以后,能够经由过程谁人服务表露出来的接口与服务举行通信。关于音乐服务来讲,这个接口能够同意用户停息、回退、中断和从头入手下手播放。
(3)ContentProvider
它是Android平台使用程序间数据共享的一种尺度接口,它以相似于URI(UniversalResourcesIdentification)的体例来暗示数据,如:content://contacts/people/1101;内容供应者将一些特定的使用程序数据供应别的使用程序利用。数据能够存储于文件体系、SQLite数据库或别的体例。内容供应者承继于ContentProvider基类,为别的使用程序取用和存储它办理的数据完成了一套尺度办法。但是,使用程序其实不间接挪用这些办法,而是利用一个ContentResolver对象,挪用它的办法作为替换。ContentResolver能够与恣意内容供应者举行会话,与其互助来对一切相干交互通信举行办理。
(4)BroadcastReceiver
BroadcastReceiver是一个专注于吸收播送关照信息,并做出对应处置的组件。良多播送是源自于体系代码的。比方,关照时区改动、电池电量低、拍摄了一张照片大概用户改动了言语选项。使用程序也能够举行播送,比方关照别的使用程序一些数据下载完成并处于可用形态。
使用程序能够具有恣意数目的BroadcastReceiver以对一切它感乐趣的关照信息予以呼应。一切的吸收器均承继自BroadcastReceiver基类。BroadcastReceiver没有效户界面。但是,它们能够启动一个activity来呼应它们收到的信息,大概用NotificationManager来关照用户。关照能够用良多种体例来吸援用户的注重力──明灭背灯、震惊、播放声响等等。一样平常来讲是在形态栏上放一个耐久的图标,用户能够翻开它并猎取动静。
与此组件相干的观点是Intent,Intent是一个对举措和举动的笼统形貌,卖力组件之间程序之间举行动静传送。而BroadcastReceiver组件则供应了一种把Intent作为一个动静播送进来,由一切对其感乐趣的程序对其作出反响的机制。举个复杂的例子,为了完成一个体系启动后播放音乐的功效,则能够界说Intent为android.intent.action.BOOT_COMPLETED,由BroadcastReceiver组件将其举行播送,而体系中的MediaPlayer吸收到该信息后则举行播放。
如上所述,4个组件之间的干系以下图:
<br>
维护一个堆栈-(void)pushViewController:(UIViewController*)viewControlleranimated:(BOOL)animated是像堆栈里压一个UIViewController-(UIViewController*)popViewControllerAnimated:(BOOL)animated是从堆栈里弹出来一个UIViewController就算你的程序不是像联系人那样向右推进也可以用UINavigationController |
|