Android 应用程序构成

一般情况下Android应用程序是由以下四种组件构造而成的:

  • Activity 活动
  • Broadcast Intent Reciver 广播接收器
  • Service 服务
  • Content Provider 内容提供器

需要注意的是,并不是每个Andorid应用程序都必须构建这4个组件,有些可能由这些组件的组合而成。一旦你确定了你的应用程序中需要的组件,那么你就应该在AndroidManifest.xml中列出他们。 这是一个XML配置文件,它用于定义应用程序中需要的组件、组件的功能及必要条件等。这个文件是必须的。

Activity 活动

活动是最基本的Andorid应用程序组件,应用程序中,一个活动通常就是一个单独的屏幕。每一个活动都被实现为一个独立的类,并且从活动基类中继承而来, 活动类将会显示由视图控件组成的用户接口,并对事件做出响应。 大多数的应用是由多屏幕显示组成。当打开一个新的屏幕时,之前一个屏幕会被置为暂停状态并且压入历史堆栈中。用户可以通过回退回到以前打开过的屏幕。我们可以选择性的移除一些没有必要保留的屏幕,因为Android会把每个从桌面打开的程序保留在堆栈中。

Intent 和 Intent Filters
调用Android专有类 Intent 进行构屏幕之间的切换。 Intent是描述应用想要做什么。Intent数据结构两最重要的部分是动作和动作对应的数据。典型的动作类型有:MAIN(活动的门户)、VIEW、PICK、EDIT等。而动作对应的数据则以URI的形式进行表示。例如:要查看某一个人的联系方式,你需要创建一个动作类型为VIEW的intent,以及一个表示这个人的URI。
与之有关系的一个类叫IntentFilter。当intent被要求做某事的时候,intent filter用于描述一个活动(或者BroadcastReceiver,看下面)能够操作哪些intent。一个活动如果要显示一个人的联系方式时,需要声明一个IntentFilter,这个IntentFilter要知道怎么去处理VIEW动作和表示一个人的URI。 IntentFilter需要在AndroidManifest.xml中定义。

通过解析各种intent,从一个屏幕切换到另一个屏幕是很简单的。当向前导航时,活动将会调用startActivity(myIntent)方法。然后,系统会在所有安装的应用程序定义的IntentFilter中查找,找到最匹配myIntent的Intent对应的活动。新的活动接收到myIntent的通知后,开始运行。当start活动方法被调用将触发解析myIntent的动作,这个机制提供了两个关键好处:

  • 活动能够重复利用从其它组件中以Intent的形式产生的一个请求
  • 活动可以在任何时候被一个具有相同IntentFilter的新的活动取代

Broadcast Intent Reciver 广播接收器

BroadcastReceiver使我们的应程序对一个外部的事件做出响应。比如:当电话呼入时,数据网络可用时,下载完成时。BroadcastReceivers不能显示UI,它只能通过 NotificationManager 来通知用户这些有趣的事情发生了。BroadcastReceivers既可以在AndroidManifest.xml中注册,也可以在代码中使用Context.registerReceiver()进行注册。但这些事情发生时,你的应用不必对请求调用 BroadcastReceivers,系统会在需要的时候启动你的应用,并在必要情况下触发BroadcastReceivers。各种应用还可以通过使用Context.sendBroadcast() 将它们自己的intent broadcasts广播给其它应用程序。典型的观察者模式。

Service 服务

这个就类似于Windwos 系统中的windows服务是一种没有界面的应用程序,在Android中一个服务是具有一段较长生命周期且没有用户界面的程序。比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个活动,让使用者可以选择歌曲并播放歌曲。然而,音乐重放这个功能并没有对应的活动,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。在这个例子中,媒体播放器这个活动会使用 Context.startService() 来启动一个服务,从而可以在后台保持音乐的播放。同时,系统也将保持这个服务一直执行,直到这个service运行结束。另外,我们还可以通过使用Context.bindService() 方法,连接到一个服务上(如果这个服务还没有运行将启动它)。当连接到一个服务之后,我们还可以通过服务提供的接口与它进行通讯。拿媒体播放器这个例子来说,我们还可以进行暂停、重播等操作。

Content Provider内容提供器

就是一个对外提供数据的接口,类似于普通Web应用的一个Webservices接口,按照标准开放出一个接口,供其他应用获取数据 。当你想将你的应用数据与其它的应用共享时,内容提供其将会很有用。一个内容提供器类实现了一组标准的方法,从而能够让其它的应用保存或读取此内容提供器处理的各种数据类型。 更详细的内容提供器资料,可以参考附带文档中的 Accessing Content Providers。

分类: Android

更多相关文章

  1. [入门八]Android的应用程序框架
  2. Android应用程序结构介绍
  3. android屏幕适配
  4. android各种分辨率和屏幕密度
  5. SmartQ7 Android 改变屏幕 分辨率
  6. android打开关闭屏幕
  7. android 唤醒屏幕
  8. Android中获取屏幕的宽和高

随机推荐

  1. [Android开发]Android中的消息机制
  2. phonegap+jquerymobile开发android的心得
  3. Android之串口通信基础
  4. Android(安卓)一个类实现的 Json 解析 -
  5. Android(安卓)下拉回弹BounceScrollView
  6. Android(安卓)OpenGL ES学习笔记之图形变
  7. 经过两天的努力,终于写出了第一个android
  8. 超简单实用详细的android Widget实例教程
  9. JS和Android交互调用
  10. Android(安卓)Studio安装插件