Android 应用框架 —— 组件
本文内容根据个人自学整理记录,理解不当之处,希望大家批评指正,大家相互学习,写学习归纳,写博客是个好习惯,希望能够坚持下去。
在前一篇文章当中介绍了Android 的系统框架,主要是为了让大家对Android 系统的内部层次结构有个清晰的认识,是开发 Android 程序开发的基础。对 Android 系统结构了解之后,要开发一个安卓应用程序需要哪些东西呢,这篇文章主要就是介绍 Android 程序开发的基本组件系统。
Android 应用框架的核心:
由于 Android 应用也是采用 MVC 理念来开发的,所以有必要了解下各个分工模块,Android 应用框架包含四个核心要素:
活动 (Activity) :是程序的交互与执行单元,主要起到对界面的控制作用,可以理解为(Controller 的部分) ,管理着视图的生命周期。
意图 (Intent) :是构建松散耦合的基础,支持从一个页面跳转到另一个页面。
视图(View) :呈现给用户的界面,展示各种信息,各项操作,背后的逻辑,执行交给控制器。
任务(Task) :跨越多个应用的一组活动。任务的概念比较抽象,因为我们平时基本不会直接接触到,它不同于传统程序中的一个功能模块就是一项任务(概念上有类似的地方,也有区别,要多加深理解) 。
下面举个例加深理解 图. 1

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

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

多任务执行流程的堆栈变化:
左侧:从下往上,依次添加到堆栈 右侧:从上往下,依次退出堆栈

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

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

不能认为服务是一个独立的进程或线程,它和应用程序的进程之间是不等同的关系,它们之间有很复杂的联系,在 Service 中要执行耗时的操作时,应开启一个新的线程并使用消息协处理其 Handler 来处理。
3. 广播接收器(Broadcast Receiver) :用于接收其他应用发出的广播,增强 Android 系统的交互性。
4. 内容提供者(Content Provider) :系统中各个应用的数据共享的纽带,通过它可以实现应用之间数据的互操作。它提供了四种常用的数据操作: Insert (插入) 、 Query (查询) 、 Update (更新) 、 Delete(删除) 。
总结:
关于以上四种组件,文章只是介绍了它们的基本功能和相关概念,不是很全面, 难免有疏漏和错误之处,它们详细的内容还需要在实际编程的过程慢慢体会和学习。在实际应用当中,通常会综合使用各项组件,使应用功能齐全,因此掌握好每种组件是非常重要的,希望上面的介绍对家学习有所帮助。Android 的应用框架是十分复杂的, 对于初学者而言, 可能会感到概念多,关系乱,本文带你从最基本的框架组件入手学习,理清各自的功能。
Android 应用框架 —— 组件的更多相关文章
- App 组件化/模块化之路——Android 框架组件(Android Architecture Components)使用指南
面对越来越复杂的 App 需求,Google 官方发布了Android 框架组件库(Android Architecture Components ).为开发者更好的开发 App 提供了非常好的样本. ...
- Android四大基本组件介绍与生命周期
Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器 ...
- Android测试框架初步
一.实验目的 1.掌握android测试项目的建立 2.掌握android测试框架的基本内容 3.编写运行android测试 二.实验内容与步骤 建立android项目MyProject,运行截图如下 ...
- Android MVVM框架RoboBinding初探
RoboBinding是一个实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架.MVVM模式是MVC模式的重要更新,使得项目结构更加的优美,易于维护以及方便 ...
- Android进阶笔记13:RoboBinding(实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架)
1.RoboBinding RoboBinding是一个实现了数据绑定 Presentation Model(MVVM) 模式的Android开源框架.从简单的角度看,他移除了如addXXListen ...
- Android视图框架
Android视图框架 Android的UI系统是android应用系统框架最核心,最基础的内容! 1. Android视图系统.层次关系 Android应用设计和Web应用设计类似,也分前端和后端设 ...
- Android入门学习:Android 系统框架及应用程序执行过程
Android基础知识学习 新手上路,还请多多帮助.由于初学,博客内容难免有不正确的地方,还请各位多多指教,相互学习! 主要内容: 1.Android层次架构及主要功能 2.Android编程模型,程 ...
- Android应用程序组件Content Provider在应用程序之间共享数据的原理分析
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6967204 在Android系统中,不同的应用 ...
- Android Multimedia框架总结(十三)CodeC部分之OpenMAX框架初识及接口与适配层实现
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52629598 前言:上篇中介绍O ...
随机推荐
- SQLite3基本使用从shell到python
SQLite是一个轻量级的关系型数据库,在訪问量不超过10万PV的中小站点中使用绰绰有余. 并且使用方便,接口简单,以下从命令行和python接口双方面介绍SQLite3的基本操作. 在linux终端 ...
- XTU1199:Number Game
题目描写叙述 给你一个有N个数的集合S和一个数X,推断是否存在S的一个子集,子集里的数的最小公倍数正好是X. 输入 第一行是数据组数T. 接下来有多组数据,每组数据包括两行: 第一行有2个数N和X,1 ...
- C# winform 加载网页 模拟键盘输入自动接入访问网络
声明: 本文原创,首发于博客园 http://www.cnblogs.com/EasyInvoice/p/6070563.html 转载请注明出处. 背景: 由于所在办公室网络限制,笔者每天都使用网络 ...
- 为什么要配置path环境变量?
一:关于path环境变量--为了在任意目录下,使用javac/java命令 第一种配置方法: 通过配置path环境变量,我们可以使某个程序,比如javac.exe,在任意目录下都可以运行,而不用跑到j ...
- 秒味课堂Angular js笔记------指令
1.属性指令 angularjs样式相关指令: ng-class ng-style ng-href ng-src ng-attr-(suffix) ng-bind ng-cloak 没解析完之前标签 ...
- Thinkphp 上传图片
<?php // 本类由系统自动生成,仅供测试用途 class ListAction extends Action { public function index(){ //$name = 's ...
- HTTPS 部署简要指南
许多Web开发者都知道SSL,但常见的情况是SSL没有完整地部署或者没有部署在它应该部署的地方.这篇关于何时及如何部署SSL的简要指南,将帮助你避免大多数常见错误. 要点 如果你有任何机密信息,或者你 ...
- SqlServer数据库设计,纠结的问题,有胆你就来!
最近,小菜遇到了数据库设计上的一个问题,希望各位大侠再次,直抒己见,帮忙分析一下.也可有更好的设计,请直接提出来. 要求:数据库(SQL Server 2005)存储每个学生,单个客观题答案.分数,主 ...
- Php RSS
RSS 聚合最近非常流行,因此至少对 RSS 及其工作方式有所了解是一名 PHP 开发人员的迫切需要.本文介绍了 RSS 基础知识.RSS 众多用途中的一些用途.如何使用 PHP 从数据库创建 RSS ...
- JavaScript 客户端JavaScript之 Web浏览器的环境
Web浏览器实现的Javascript,通过Web浏览器实现的JavaScript引入了大量可脚本化的对象(1.Web浏览器 2.HTML 3.HTML中的内容) Web浏览器中的Javascrip ...