Android 应用框架 —— 组件

时间:2022-11-16 10:02:32

  本文内容根据个人自学整理记录,理解不当之处,希望大家批评指正,大家相互学习,写学习归纳,写博客是个好习惯,希望能够坚持下去。
  在前一篇文章当中介绍了Android 的系统框架,主要是为了让大家对Android 系统的内部层次结构有个清晰的认识,是开发 Android 程序开发的基础。对 Android 系统结构了解之后,要开发一个安卓应用程序需要哪些东西呢,这篇文章主要就是介绍 Android 程序开发的基本组件系统。

Android 应用框架的核心:

  由于 Android 应用也是采用 MVC 理念来开发的,所以有必要了解下各个分工模块,Android 应用框架包含四个核心要素:
  活动 (Activity) :是程序的交互与执行单元,主要起到对界面的控制作用,可以理解为(Controller 的部分) ,管理着视图的生命周期。
  意图 (Intent) :是构建松散耦合的基础,支持从一个页面跳转到另一个页面。
  视图(View) :呈现给用户的界面,展示各种信息,各项操作,背后的逻辑,执行交给控制器。
  任务(Task) :跨越多个应用的一组活动。任务的概念比较抽象,因为我们平时基本不会直接接触到,它不同于传统程序中的一个功能模块就是一项任务(概念上有类似的地方,也有区别,要多加深理解) 。
  下面举个例加深理解 图. 1

Android 应用框架 —— 组件

  当我们点开手机界面上的一个 APP,系统即创建一项任务(Task) ,开启一项活动(Activity) ,并打开一个界面(View) ,意图(Intent)负责实现从图 1 左边的界面跳转到右边的界面的功能,当该应用需要给用户发送提示短信(或在通知栏推送新内容,再或者打开一起其他已安装的 APP) ,这个过程就是任务(Task)的功能,它联系了多个活动/应用,会创建多个独立的进程和堆。
  关于多任务的执行过程:

Android 应用框架 —— 组件

  按下“下一个界面”Button 时,执行向右的箭头操作;按下返回键,执行向左的箭头操作。
  单任务执行流程的堆栈变化:
  左侧:从下往上,依次添加到堆栈 右侧:从上往下,依次退出堆栈

Android 应用框架 —— 组件

  多任务执行流程的堆栈变化:

  左侧:从下往上,依次添加到堆栈 右侧:从上往下,依次退出堆栈

Android 应用框架 —— 组件

  此外,还要了解的是 Activity 的 langchMode,将在后面介绍。

Android 系统的四大组件 :
  通常认为 Android 系统应用框架包含四大组件:活动(Activity) 、服务(Service) 、广播接收器(Broadcast Receiver) 、内容提供者(Content Provider) 。 它们遵循统一的标准, 各个组件实现满足其功能的各种标准接口;各自完成其特殊的功能;可单独使用,也联合部署,实现某种需求。
  下面来简要介绍各个组件的功能:
  1. 活动(Activity) :完成与用户的交互任务,执行界面的用户操作行为。在新建的 Activity 类要继承系统的 Activity 类,维护、管理着 View 控件,并实现对活动生命周期的管理功能。

Activity  生命周期管理 图. 2

Android 应用框架 —— 组件

  2. 服务(Service) :负责为后台执行的任务提供支持,并负责管理其生命周期。
Service 生命周期管理 图. 3

Android 应用框架 —— 组件

不能认为服务是一个独立的进程或线程,它和应用程序的进程之间是不等同的关系,它们之间有很复杂的联系,在 Service 中要执行耗时的操作时,应开启一个新的线程并使用消息协处理其 Handler 来处理。
  3. 广播接收器(Broadcast Receiver) :用于接收其他应用发出的广播,增强 Android 系统的交互性。
  4. 内容提供者(Content Provider) :系统中各个应用的数据共享的纽带,通过它可以实现应用之间数据的互操作。它提供了四种常用的数据操作: Insert (插入) 、 Query (查询) 、 Update (更新) 、 Delete(删除) 。

总结:
  关于以上四种组件,文章只是介绍了它们的基本功能和相关概念,不是很全面, 难免有疏漏和错误之处,它们详细的内容还需要在实际编程的过程慢慢体会和学习。在实际应用当中,通常会综合使用各项组件,使应用功能齐全,因此掌握好每种组件是非常重要的,希望上面的介绍对家学习有所帮助。Android 的应用框架是十分复杂的, 对于初学者而言, 可能会感到概念多,关系乱,本文带你从最基本的框架组件入手学习,理清各自的功能。