机械 模具 夹具 数控 车床 工艺 液压 汽车 电机 升降台 控制 Proe CAD 建模 减速器 机械手 齿轮 故障 诊断 自动化 电气 监控 组态 电源 发电 水电 电站 单片机 PLC MATLAB 路径 盘算机 Android Linux 电子 通讯 治理系统 网站 ASP JSP PHP Java Asp.net 论坛 进销存 图书 考试 Web 购物 点餐 生意营业 平台 网络妄想 设置 C++ C# 土木 修建 施工 结构 框架 桥梁 水利 公路 隧道 造价 给水 教学楼 办公楼 水库 重力坝 化工 合成 工段 物流 仓储 包装 开题 使命书 外文 文献 翻译 答辩 名堂 课程
 首 页 机械结业设计 电子电气结业设计 盘算机结业设计 土木匠程结业设计 视觉转达结业设计 免费结业设计 牛牛棋牌下载 结业论文范文 结业设计论文流程 
垫片
您现在所在的位置:澳门牛牛平台 >>免费结业设计 >> 文章内容
垫片
   我们提供全套结业设计论文服务,联系   625110801   
android手机开源系统先容
文章泉源:mog-net.com   宣布者:学生结业作品网站   宣布时间:2019-05-06 10:34:45   阅读:52

下一代开放操作系统的主流将不会在桌面上,可是将会泛起在我们天天携带的手机上。这些开放性的情形将会向导这些新的应用可能集成这些已经存在的在线服务,虽然随着日以具增的数据与服务在手机上的支持,手机上的清静缺陷也越发现显。下一代操作系统本质在于是否提供一个完整综合的清静平台。

澳门牛牛平台由开松手机同盟(open Handset Alliance 谷歌向导)所开发的android 系统是一个被普遍看好的一个手机开源系统,该系统提供一个基本的操作系统,一其中央件应用层,一个java开发工具和一个系统应用网络器(collection of system applications)。只管android SDK自2007年就宣布了,可是第一部android 手机却在2008年10月才降生。自从这时起谷歌开起了自己的时代,T-Mobile的G1的制造商台湾 HTC估算G1的发货量在2008年底已经凌驾100万部。据业内人士预期该G1手机的销量将会在2009年继续保持。不久的未来其他许多手机供应商要妄想支持这个系统。

一个围绕android重大的开发者社区已经建设,同时许多新的产物和应用已经可以在android上使用。一个Android的主要卖点是它使开发职员无缝把在线服务扩展得手机。这方面最显着的例子是谷歌的细麋集成Gmail,日历和联系人Web应用法式通过该系统。用户只需提供一个android用户名和密码,其手机自动同步与谷歌的服务。其他厂商正在迅速顺应自己的现有的即时通讯,社交网络和游戏服务。Android和许多企业寻找新途径来整合他们的自己已有的营业到android上。

传统的台式机和服务器的操作系统一直在起劲举行清静功效的集成。这些小我私人和商业应用在单一平台的很精彩,然而这一块营业一个手机平台上像android上不是很有用。它给了许多研究职员希望。Android没有停在为其他平台体用应用支持:应用的执行依赖于顶层JAVA中央件,这其中央件运行在嵌入式Linux 内核之上。以是开发职员要把他们的应用部署到Android必须使用其自界说的用户界面情形。

此外,android系统应用限制各应用相互挪用API协作,而且对方为自己的用户应用举行身份验证。只管这些应用有一定的清静特征,我们一些有履历的开发职员开发android应用人士透露,设计清静应用法式并不总是直线前进的。Android使用一个简朴的允许标签分配模式限制会见的资源,但其他应用法式的缘故原由须要性和便利,其设计师们增添了疑心对这个系统。本文试图对Android的清静的重大性举行解说,并注重一些可能的生长缺陷以及应用法式的清静。我们通过实验得出一些履历教训,希望对未来的清静有用。

Android应用法式框架对开发者来说是一个强制架构。它没有一个main()函数功效或单一入口点执行,相反,开发职员必须在设计方面的应用组件。我们开发的应用对android的sdk的资助的API

Android系统界说了4种组件类型。

Activity 组件界说应用法式的用户界面。通常,应用法式开发者界说每一个运动“画面。”Activity可以自己最先,也可能通过转达和返回值。在一时间只有一个键盘的系统Activity可以举行处置赏罚,在这个时间所有其他的Activity都市被暂停。

Service组件执行后台处置赏罚。当一个运动需要举行一些操作,在用户界面消逝以后(如下载一个文件或播放音乐),它通常接纳此种行动特殊设计的服务。开发职员还可以在系统启动使用特殊的守护历程,Service通常界说一个远程历程挪用(RPC),其他系统组件可以用来传送接口下令和检索数据,以及注册一个回调函数。

ContentProvider组件存储和共享数据 用关系数据库接口。每个Content供应者都有一个关联的“权限”来形容它的内容包罗。其他组件使用时作为一个handle执行SQL查询(如SELECT,INSERT或DELETE内容。虽然Content供应者通常存储把数值放在数据库纪录中,数据检索是实现特殊的例子,文件也同时通过内容提供商共享接口。

Broadcast receiver该组件作为为从邮件信箱发送信息给他应用法式。通常,广播新闻的应用法式代码隐含的目的地。因此,广播吸收器订阅这些目的地吸收发送给它的新闻。应用法式代码也可以解决明确广播吸收机包罗命名空间分配。

Component Interaction该组件交互的主要机制是一个intent ,这是一个简朴的新闻工具,其中包罗一个目的地组件的地址和数据。 Android的API界说了他的要领中传入intent ,并使用该信息来启动一个activity例如最先一个activity(startActivity(intent)),启动服务(startService(intent))和广播信息(sendBroadcast(intent))。Android框架来通知这些要领的挪用最先执行在目的应用法式代码。这个历程中内部组件通讯称为一个行动。简朴地说, Intent工具界说的“Intent”以执行“action”。Android的一个最强盛的特点是允许的多种intent寻址机制。开发职员可以解决一个目的组件使用其应用的空间,他们也可以指定一个隐含的名称。在后一种情形下,系统决议了一个action的最佳组件,通过思量安装的应用法式和用户的选择 。

这个隐含的名字被称为行动字符串由于他特殊的类型的请求行动。例如一个view行动字符串,在一个intent中和数据域指向一个图像文件,系统将会直接指首选图像浏览器。

开发者也能使用行动字符串举行大量广播发送和吸收。在吸收端的吸收者,开发者使用一intent 过滤器来定制特殊的行动字符串。Android系包罗附加目的的决议规则,但可选的数据操作字符串类型是最常见的。

Android应用法式使用Java编程语言开发。apt工具吧编译后的Java代码连同应用法式所需的其他数据和资源文件一起打包到一个Android包文件中,这个文件使用.apk作为扩展名。此文件是分发并安装应用法式到移动装备的载体;是用户下载到他们的装备的文件。单一.apk文件中的所有代码被以为是一个应用法式。

澳门牛牛平台从多个角度来看,每个Android应用法式都存在于它自己的天下之中:

1. 默认情形下,每个应用法式均运行于它自己的Linux历程中。当应用法式中的任何代码需要被执行时,Android启动此历程,而当不再需要此历程而且其它应用法式又请求系统资源时,则关闭这个历程。

2。 每个历程都有其独占的虚拟机(VM),以是应用法式代码与其它应用法式代码是隔离运行的。

3. 默认情形下,每个应用法式均被赋予一个唯一的Linux用户ID,并加以权限设置,使得应用法式的文件仅对此用户及此应用法式可见—只管也有其它的要领使得这些文件同样能为其他应用法式会见。

1.应用法式组件

Android的一个焦点特征就是一个应用法式可以使用其它应用法式的元素(若是谁人应用法式允许的话)。例如,若是你的应用法式需要显示一个图片卷动列表,而另一个应用法式已经开发了一个适用的而又允许此外应用法式使用的话,你可以直接挪用谁人卷动列表来完成事情,而不用自己再开发一个。你的应用法式并没有吸纳或链接其它应用法式的代码。它只是在有需求的时间启动了其它应用法式的谁人功效部门。

为到达这个目的,系统必须能够在一个应用法式的任何一部门被需要时启动一个此应用法式的历程,并将谁人部门的Java工具实例化。因此,不像其它大多数系统上的应用法式,Android应用法式并没有为应用法式提供一个单独的入口点(好比说,没有main()函数),而是为系统提供了可以实例化和运行所需要的必备组件。一共四种组件类型:

(1)Activity

Activity是为用户操作而展示的可视化用户界面。例如,一个activity可以展示一个菜单项列表供用户选择,接着显示一些包罗说明文字的照片。一个短新闻应用法式可以包罗一个用于显示要发送新闻到的联系人列表的activity,一个给选定的联系人写短信的activity以及翻阅以前的短信或改变设置的其他activity。只管它们一起组成了一个内聚的用户界面,但其中每个activity都不与其它的保持自力。每一个都实现为以Activity类为基类的子类。

一个应用法式可以只有一个activity,或者,如适才提到的短信应用法式那样,包罗许多个。每个activity的作用,以及有几多个activity,虽然是取决于应用法式及其设计的。一样平常情形下,总有一个应用法式被标志为用户在应用法式启动的时间第一个看到的。从一个activity转向另一个activity靠的是用当前的activity启动下一个。

每个activity都被给予一个默认的窗口以举行绘制。一样平常情形下,这个窗口是满屏的,但它也可以是一个小的位于其它窗口之上的浮动窗口。一个activity也可以使用附加窗口—例如,一个在activity运行历程中弹出的供用户响应的对话框,或是一个当用户选择了屏幕上特定项目后显示的须要信息的窗口。

窗口显示的可视内容是由一系列条理化view组成的,这些view均继续自View基类。每个view均控制着窗口中一块特定的矩形区域中举行绘制,并对用户直达其区域的操作做出响应。因此,view是activity与用户举行交互的界面。例如,view可以显示一个小图片,并在用户指定它的时间发生行动。Android有一些预置的view供开发者使用—包罗按钮、文本域、转动条、菜单项、复选框等等。

view条理结构是由Activity。setContentView()要领放入activity的窗口之中的。content view是位于条理结构根位置的View工具。(参见自力的用户界面文档以读取关于view及条理结构的更多信息。)

2.Service

Service没有可视化的用户界面,而是在一段时间内在后台运行,例如,一个service可以在用户做其它事情的时间在后台播放配景音乐、从网络上获取数据或者盘算一些工具并提供应需要这个运算效果的activity使用。每个service都继续自Service基类。

一个媒体播放器播放列表中的曲目是一个不错的例子。播放器应用法式可能有一个或多个activity来给用户选择歌曲并举行播放。然而,音乐播放这个使命自己应该由任何activity来处置赏罚,由于用户期望纵然在他们脱离播放器应用法式而最先做此外事情时,音乐仍在继续播放。为到达这个目的,媒体播放器activity可以启动一个运行于后台的service。系统将在这个activity不再显示于屏幕后,仍维持音乐播放service的运行。

毗连至(绑定到)一个正在运行的service(若是service没有运行,则启动之)是可能的。毗连之后,你可以通过谁人service袒露出来的接口不service举行通讯。对于音乐service来说,这个接口可以允许用户暂停、回退、阻止以及重新最先播放。

犹如activity和其它组件一样,service运行于应用法式历程的主线程内。以是它不会对其他组价或用户界面有任何以障,它们一样平常会派生一个新线程来执行一些时间消耗型使命(好比音乐回放)。参见稍后的历程和线程。

(1)Broadcast receiver

Broadcast receiver是一个与注于吸收广播通知信息,并做出响应处置赏罚的组件。许多广播是由系统代码发生的—例如,通知时区改变、电池电量低、拍摄了一张照片或者用户改变了语言选项。应用法式也可以提倡广播—例如,通知其它应用法式一些数据已经下载到装备上处于可用状态。

一个应用法式可以拥有恣意数目的broadcast receiver,以对所有它以为主要的通知信息予以响应。所有的receiver均继续自Broadcast Receiver基类。

Broadcast receiver没有用户界面。然而,它们可以启动一个activity来响应它们收到的信息,或者也可以使用NotificationManager来通知用户。通知可以用多种方式来吸引用户的注重力—闪动背光灯、震惊装备、播放声音等等。通知一样平常是在状态栏上放一个持丽的图标,用户可以打开它并获取新闻。

(2)Content provider

Content provider将一些特定的应用法式数据供应其它应用法式使用。数据可以存储于文件系统、SQLite数据库或者其它有意义的方式。content provider继续于ContentProvider基类,实现了一套使得其他应用法式能够检索和存储它所治理的类型数据的尺度要领。然而,应用法式并不直接挪用返回这些要领,而是使用一个ContentResolvert工具,挪用它的要领作为替换。ContentResolver可以与任何content provider举行会话;与其相助对任何相关的历程间通讯举行治理。

参阅自力的Content Providers文档以获得更多关于使用content provider的信息。

每当泛起一个需要被特定组件处置赏罚的请求时,Android会确保谁人组件的应用法式历程处于运行状态,须要时会启动它,并确保谁人组件的一个合适的实例可用,须要时会建设谁人实例。

1.1激活组件:intent

当吸收到ContentResolver发出的请求后,content provider被激活。而其它三种组件—activity、service和broadcast receiver,被一种叫做intent的异步新闻所激活。intent是一个生涯着新闻内容的Intent工具:对于activity和service来说,它指明晰所请求的操作名称,并指定了用来操作的数据的URI和其它一些信息。例如,它可以承载一个对一个activity的请求,让它为用户显示一张图片,或者让用户编辑一些文本。而对于broadcast receiver来说,Intent工具指明晰所转达的操作。例如,它可以对所有感兴趣的工具转达照相按钮被按下。

对于每种组件来说,激活的要领是差异的:

1.通过转达—IntentContext.setActivity()Activity.startActivityForResult(以启动(或指定新事情给)一个activity。响应的activity可以通过挪用自身的getIntent()要领来审查最新激活它的intent。Android通过挪用activity的onNewIntent()要领来转达给它随后的任何intent。)

一个activity经常启动另一个activity。若是它期望它所启动的谁人activity返回一个效果,它会挪用startActivityForResult()而不是startActivity()。例如,若是它所启动了另外一个activity以使用户挑选一张照片,它也许想知道哪张照片被选中了。其效果将会被封装在一个Intent工具中,并转达给发出挪用的activity的onActivityResult()要领。

2.通过转达一个Intent工具至Context.startService()以启动一个service(或向正在运行的service给出一个新的指令)。Android挪用此service的onStart()要领并将Intent工具转达给它。

与此类似,一个intent可以被转达给Context.bindService()以建设一个处于挪用组件和目的service之间的运动毗连。此service会通过onBind()要领的挪用来获取此Intent工具(若是此service尚未运行,bindService()会先启动它)。例如,一个activity可以建设一个不前述的音乐回放service的毗连,这样它就可以提供应用户一些途径(用户界面)来控制回放。这个activity可以挪用bindService()来建设此毗连,然后挪用service中界说的要领来控制回放。

稍后的远程要领挪用一节有关于怎样绑定至一个service的更多细节。

3.应用法式可以通过转达一个Intent工具至Context.sendBroadcast(),Context.sendOrderedBroadcast(),以及Context,sendStickyBroadcast()和其它类似要领来提倡一个广播。Android会挪用所有对此广播有兴趣的broadcast receiver的onReceive()要领,将此intent转达给它们。

1.2关闭组件

content provider仅在响应来自ContentResolver的请求时处于运动状态。而broadcast receiver仅在响应一条广播信息的时间处于运动状态。以是没有须要去显示地关闭返回这些组件。

澳门牛牛平台而activity则差异,它提供了用户界面:只要会话依然一连,无论会话历程有无空闲,activity同用户举行长时间会话且可能一直处于运动状态。与此相似,service也会很长一段时间内保持运行。以是Android为关闭activity和service提供了一系列有序的要领。

Activity可以通过挪用自身的finish()要领来关闭。一个activity可以通过挪用finishActivity()要领来关闭另外一个activity(它用startActivityForResult()启动的)。

Service可以通过挪用自身的stopSelf()要领,或挪用Context。stopService()来阻止。

系统也会在组件不再被使用的时间或者当Android必须为更多的运动组件接纳内存时关闭它。稍后的组件的生命周期一节,将对返种可能性及效果举行更详细的讨论。

1.3 manifest文件

当Android启动一个应用法式组件之前,它必须知道谁人组件是存在的。因此,应用法式会在一个被打包到Android包中的manifest文件中声明它的组件,。apk文件还将涵括应用法式的代码、文件以及其他资源。

Manifest文件时一个结构化的XML文件,而对于所有应用法式,文件名总是AndroidManifest.xml。除了声明此应用法式各个组件,它会做许多其他事情,好比指明应用法式所需毗连到的库的名称(除了默认的Android库之外)以及标出应用法式期望获得的种种权限。

但manifest文件最主要的使命是向Android陈诉此应用法式的各个组件。举例说明,一个activity可能声明如下:

<activity>元素的name属性指定了实现此activity的Activity子类。icon和label属性指向包罗展示给用户的此activity的图标和标签的资源文件。

其它组件也以类似的要领声明—<service>元素用于声明service,<receiver>元素用于声明broadcast receiver,而<provider>元素用于声明content provider。未在manifest文件中举行声明的activity、service以及content provider将不为系统所见,从而也就永不会被运行。然而,broadcast receiver既可以在manifest文件中声明,也可以在代码中动态建设(为BroadcastReceiver工具),并以挪用Context。registerReceiver()的方式注册至系统。

1.4 Intent过滤器

一个Intent工具可以显式地指定一个目的组件。若是举行了返种指定,Android会找到这个组件(基于manifest文件中的声明)并激活它。但若是intent没有显式的指定一个目的,Android就必须找到合适的组件来响应此intent。这个历程是通过较量Intent工具和所有潜在目的的int扭头过滤器完成的。组件的intent过滤器会通知Android它所能处置赏罚的intent类型。犹如组件的其它须要信息一样,这些intent过滤器是在manifest文件中举行声明的。返里有一个对先前例子的扩展,其中加入了针对activity的两个intent过滤器:

示例中的第一个过滤器—action"android.intent.action.MAIN"和category"android.intent.category.LAUNCHER"的组合—是常见的一个。它标明晰此activity应该在应用法式启动其中显示,就是用户在屏幕上看到的此装备上可供启动的应用法式的列表。换句话说,这个activity是应用法式的入口点,是用户在启动器中选择运行这个应用法式后所见到的第一个activity。

  全套结业设计论文现成制品资料请咨询 625110801      返回澳门牛牛平台 如转载请注明泉源于mog-net.com  


打印本页 | 关闭窗口

Email:biyeshejiba@163.com 在线QQ:   625110801 学生结业作品网站  
本站结业设计结业论文资料均属原创者所有,仅供学习交流之用,请勿转载并做其他非法用途.若有侵占您的版权有损您的利益,请联系我们会连忙纠正或删除有关内容!