- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Anatomy of an Android Application.ppt
Anatomy of an Android Application 剖析Android应用 Android系统架构 Android应用四种组件: Activity Intent Receiver Service Content Provider Activity Activity是四种组件中最常用的一种, 一个activity通常表现为程序中的一个屏幕,每个activity都是通过对Activity基类的继承来实现的。Activity这个类应该显示一个由View组成的用户界面,并且能够对事件做出响应。大部分的应用程序由多个屏幕组成。例如, 一个文字短信程序由第一个屏幕显示一个联系人列表,用来发送信息,而第二个屏幕用来写短信息,另外一个屏幕查看短信息或对程序进行设置。每个屏幕都是由一个activity来实现的。通过开始一个新的activity你可以进入到新的屏幕中。在某些情况下一个activity会给前一个 activity返回一个值--例如一个让用户进行照片选择的activity会把选择的照片送回至使用过它进行选择的那个activity。 当一个新的屏幕打开, 前一个屏幕就被暂停,并且放入堆栈中。用户可以通过“返回”来直达前一个屏幕。如果它没有保留价值,屏幕也可以从堆栈中移出。Android从初始屏幕开始为每个应用程序保留一个堆栈。 Intent and Intent Filters Android使用一个特殊的叫做Intent的类从一个屏幕移动到另一个屏幕。一个Intent描述了一个应用程序要完成的事情。Intent中最重要的两个数据结构是行为(Action)以及这个行为所要操作的数据(the data to act upon)。 典型的行为是 MAIN,VIEW, PICK, EDIT(具体的可以查阅android SDK- reference中的Aent类,里面的constants中定义了所有的action)。那些被操作的数据表现为URI。例如,为了看一个人(A)的Contact信息,你应该创建一个Intent,这个Intent拥有一个VIEW行为和一个数据集,这个数据集通过URI指向了A。与此相关的,有一个类叫做IntentFilter。如果说Intent是说明了对做某事提供了有效的反应,那么IntentFilter就是要说明一个对activity(或者intent recevier,见下文)的哪些请求能够进行处理。一个能够显示某人联系信息的activity应该声明一个intetfilter,当VIEW指向了某人的时候,此interfilter声明了它知道如何处理VIEW的行为,Acitivity的相关IntenFilter声明要写入 AndroidManifest.xml文件中从一个屏幕转换到另外一个屏幕是通过解析一个目的来完成的。 Intent and Intent Filters 例如屏幕间的切换是通过解析Intent实现的。当前向导航时,activity会自动调用startActivity(intent myintent)方法。系统会在所有应用程序中定义的IntentFilter中查找,选择最匹配myintent的Intent对应的 activity。新的activity收到intent的通知后,开始运行。Intents解析过程在startActivity()方法被调用时发生,提供了两个好处: 1. Activity 能够通过简单的以 Intent 的形式发送请求来重用其他组件中的功能。 2. Activity 能够在任何时候由一个带有相同 IntentFilter 的 Activity 来替换。 Intent Receiver 如果希望应用程序能够对一些扩展事件做出反映,你可以使用IntentReceiver来编程,使应用程序能够响应外部事件,如电话呼入、数据网络可用、处于晚上时。尽管IntentReceiver可以使用NotificationManager来提醒用户一些感兴趣的事件的发生,但是它并不显示用户界面。Intent Receiver在AndroidManifest.xml中完成注册,当然您也可以在代码中通过Context.registerReceiver() 方法完成注册。您的应用程序的触发不必调用intent receiver;系统会在需要的时候启动您的应用程序,当intent receiver被触发时。应用程序也可以通过Context.broadcastIntent()将自身的intent广播给其他应用程序。 Service Service是具有长生命周期,且没有用户界面的程序。典型的例子是媒体播放器播放曲目表中的歌曲。在媒体播放器中,可能将有一个或多个Activity允许
文档评论(0)