安卓开发:Android应用程序的四个关键点 |
关于一个Android 利用程序来说,是由四种 要害 构造块组织而成的,这四种 构造块分别是:Activity、Intent Receiver、Service、Content Provider 然而,并不是每一个Android 利用程序都需求这四种 构造块,这不是必须的,某些时候,我们 惟独求这四种中的几种组合成我们的 利用 。 当我们明确了我们的 利用需求哪些 构造块后,我们就需求在AndroidManifest.xml中 注销这些 构造块的清单 。这是一个XML配置文件,这个配置文件用于定义我们的 利用程序的组件、组件的 性能及必要条件等 。这个配置文件是每个Android 利用 必须的 。关于AndroidMainfest.xml的Schema,我们对四种 构造块做一些 注明: 1、Activity Activity是Android 构造块中最 根本的一种,在 利用中,一个 activity通常便是一个 径自的屏幕 。每一个activity都被实现为一个独立的类,而且继承于Activity这个基类 。这个activity类将会显示由几个Views控件构成的消费者接口,并对事件做出响应 。大部份的 利用都会包括多个的屏幕 。例如,一个短 信息 利用程序将会有一个屏幕用于显示 联络人列表,第二个屏幕用于写短 信息,同时还会有用于阅读旧短 信息及进行系统设置的屏幕 。每一个这样的屏幕,便是一个activity 。从一个屏幕导航到另一个屏幕是很 方便的 。在一些 利用中,一个屏幕甚至会返回值给前一个屏幕 。 当一个新的屏幕 打开后,前一个屏幕将会暂停,并 保留在历史堆栈中 。消费者 可以返回到历史堆栈中的前一个屏幕 。当屏幕不再 使用时,还 可以从历史堆栈中删除 。默许状况下,Android将会保留从主屏幕到每一个 利用的运行屏幕 。 Android 使用了Intent这个特别类,实现在屏幕与屏幕中间移动 。 Intent类用于 形容一个 利用将会做什么事 。在Intent的 形容 构造中,有两个最主要的 部分:动作和动作对应的数据 。典型的动作类型有:MAIN(activity的门户)、VIEW、PICK、EDIT等 。而动作对应的数据则以URI的 模式进行 示意 。例如:要查看一个人的 联络 模式,你需求 缔造一个动作类型为VIEW的intent,以及一个 示意这个人的URI 。 与之有关系的一个类叫IntentFilter 。 有关于intent是一个有效的做某事的 申请,一个intent filter则用于 形容一个activity(或者Intent Receiver) 可以操作哪些intent 。一个activity假如要显示一个人的 联络 模式时,需求申明一个IntentFilter,这个 IntentFilter要晓得怎么去 解决VIEW动作和 示意一个人的URI 。IntentFilter需求在AndroidManifest.xml中定义 。 通过解析各种intent,从一个屏幕导航到另一个屏幕是很 方便的 。当向前导航时,activity将会调用 startActivity(Intent myIntent) 步骤 。 而后,系统会在全部安装的 利用程序中定义的IntentFilter中搜索,找到最匹配myIntent的Intent对应的 activity 。新的activity 接纳到myIntent的 告诉后,开始运行 。当startActivity 步骤被调用将触发解析myIntent 的动作,这个机制提供了两个 要害 好处: ◆Activities 可以 反复利用从其它组件中以Intent的 模式产生的一个 申请; ◆Activities 可以在任何时候被一个 存在 雷同IntentFilter的新的Activity取代 。 2、Intent Receiver 当你 盼望你的 利用 可以对一个外部的事件(如当电话呼入时,或者数据网络可用时,或者到了晚上时)做出响应,你 可以 使用一个Intent Receiver 。 固然Intent Receiver在有兴趣的事件 产生时,会 使用NotificationManager 告诉消费者,但它并不能生成一个UI 。Intent Receiver在AndroidManifest.xml中注册,但也 可以在代码中 使用 Context.registerReceiver()进行注册 。当一个intent receiver被触发时,你的 利用 毋庸对 申请调用intent receiver,系统会在需求的时候启动你的 利用 。各种 利用还 可以通过 使用Context.broadcastIntent()将它们自己的 intent receiver 播送给其它 利用程序 。 3、Service 一个Service是一段长生命周期的,没有消费者界面的程序 。 比较好的一个例子便是一个正在从播放列表中播放歌曲的媒体播放器 。在一个媒体播放器的 利用中,应该会有多个activity,让 使用者 可以 取舍歌曲并播放歌曲 。然而,音乐重放这个 性能并没有对应的activity,由于 使用者固然会认为在导航到其它屏幕时音乐应该还在播放的 。在这个例子中,媒体播放器这个 activity会 使用Context.startService()来启动一个service,从而 可以在 后盾 维持音乐的播放 。同时,系统也将 维持这个service向来执行,直到这个service运行 完毕 。另外,我们还 可以通过 使用Context.bindService() 步骤,衔接到一个service上(假如这个service还没有运 即将启动它) 。当衔接到一个service之后,我们还 可以service提供的接口与它进行通信 。拿媒体播放器这个例子来说,我们还 可以进行暂停、重播等操作 。 4、Content Provider 利用程序 可以将它们的数据 保留到文件中、SQL数据库中,甚至是任何有效的 设施中 。当你想将你的 利用数据与其它的 利用共享时,Content Provider将会很有用 。一个Content Provider类实现了一组 标准的 步骤,从而 可以让其它的 利用 保留或读取此Content Provider 解决的各种数据类型 。 |