Android应用程序的基本组件

Android应用程序由若干组件构成,本节讲解这些组件的基本概念,详细的使用将会在后期的相关课程中详细介绍。

View

Android 应用中的所有用户界面元素(例如TextView,Button,ListView)都是使用 View 和 ViewGroup 对象构建而成。View 对象用于在屏幕上绘制可供用户交互的内容。ViewGroup 对象用于储存其他 View(和 ViewGroup)对象,以便定义界面的布局。

我们一般利用系统的提供的各种控件完成UI界面的搭建,当系统的控件无法满足界面需求时,我们也可以从View类进行继承,创建自己的控件。

这里我们还要特殊说明一下ViewGroup,ViewGroup也是View的子类,可以把ViewGroup理解成容器,ViewGroup里面可以包含许多View或者ViewGroup,这样就形成了一种树形结构,如下图所示:

我们可以在代码中的实例化 View 对象并开始构建树,最简单且最有效的方法是使用 XML 文件

说明:View是一种典型的组合模式,关于组合模式的详细描述可以参考《设计模式:可复用面向对象软件的基础》

Activity

Activity是一个应用程序组件,表示具有用户界面的单一屏幕,用户可以用来交互为了完成某项任务。Activity相当于Web应用程序中的页面,Activity提供一个可视化的区域,在当前区域中可以放置各种Android控件,例如TextView,Button等。

通常一个APP由若干个Activity组成,例如,电子邮件应用可能具有一个显示新电子邮件列表的 Activity、一个用于撰写电子邮件的 Activity 以及一个用于阅读电子邮件的 Activity。

一般情况下有一个Activity作为主Activity,当系统启动时打开主Activity。

Fragment

Fragment时Android 3.0以后推出的技术,可以把Fragment理解成Activity片段。当时引入的初衷是为了简化平板电脑等大屏幕UI的设计,开发人员通过Fragment对UI组件进行分组、模块化管理,这样可以更方便的在程序运行过程中动态更新Activity的用户界面。

Fragment虽然必须嵌入到Activity才能使用,但它有自己的一套生命周期回调方法。

Service

Service 是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。例如我们常见的音乐播放器,就是由服务来处理播放的。

服务可以在当前进程中运行,也可以作为独立的进程运行。

BroadcastReceiver

BroadcastReceiver是一种用于响应系统范围广播通知的组件,很多时候,广播消息都是由系统发出的,例如收到短信、电量不足等,此外应用程序也可以发送自定义广播消息, 例如,通知其他应用某些数据已下载至设备;

广播分为两种:

  1. 普通广播:完全异步,可以在同一时刻被所有接收者接收到
  2. 有序广播:接收者将按照预先声明的优先顺序依次接收广播。

Intent

Android 负责应用中的组件的启动,要想启动某个组件(不论是当前应用还是其他应用),必须向系统传递一则消息,说明您想启动特定组件。Intent就是一个消息传递对象。Intent的基本用途主要是以下三种:

1)启动 Activity:Activity 表示应用中的一个屏幕。通过将 Intent 传递给 startActivity(),就可以启动新的 Activity 实例。Intent 描述了要启动的 Activity,并携带了任何必要的数据。

如果希望在 Activity 完成后收到结果,可以调用 startActivityForResult()方法。并在 Activity 的 onActivityResult() 回调中将结果作为单独的 Intent 对象接收。

2)启动服务:通过将 Intent 传递给 startService()或bindService(),可以启动服务执行一次性操作(例如,下载文件)。Intent 描述了要启动的服务,并携带了任何必要的数据。

3)传递广播:系统将针对系统事件(例如:系统启动或设备开始充电时)传递各种广播。通过将 Intent 传递给 sendBroadcast()、sendOrderedBroadcast() 或 sendStickyBroadcast(),以将广播传递给其他应用。

Intent分为显式Intent和隐式Intent。显式Intent直接用组件的名称定义目标组件,这种方式很直接。隐式Intent恰恰相反,它不会用组件名称定义需要激活的目标组件,由于没有明确的目标组件名称,所以必须由Android系统帮助应用程序寻找与Intent请求意图最匹配的组件,如下图所示:

Content Provider

当系统中部署了多个APP后,就会有APP之间数据共享的需求,比如在短信接收程序中,用户想把陌生号码直接添加到通讯录中,发送短信是,想从通讯录中查询联系人等等。针对这种APP之间的数据交互,Android提供了Content Provider,他是不同应用程序之间进行数据交换的标准API,当一个APP通过Content Provider暴露自己的数据后,其他APP就可以通过ContentResolver来操作Content暴露的数据。

(张伟:2018年9月6日,以上图片来自于android帮助)

(转载时请注明来源)

猜你喜欢

转载自blog.csdn.net/salary/article/details/82459228