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 ... 
随机推荐
- ContentProvider简单介绍
			1.什么是ContentProvider 数据库在Android其中是私有的,当然这些数据包含文件数据和数据库数据以及一些其它类型的数据. 不能将数据库设为WORLD_READABLE,每一个数据 ... 
- 安装LVS安装LVS和配置LVS的工作比较繁杂
			安装LVS安装LVS和配置LVS的工作比较繁杂,读者在配置的过程中需要非常细心和耐心.在本节我们将对其进行详细地介绍.主要包括如下几个核心步骤:1.获取支持LVS的内核源代码如果读者需要使用LVS,需 ... 
- [Unit Testing] Angular Test component with required
			export default (ngModule) => { describe('Table Item component', () => { let $compile, directiv ... 
- JavaScript高级编程II
			原文地址: http://www.onlamp.com/pub/a/onlamp/2007/08/23/advanced-javascript-ii.html?page=1 在前面的文章中, ... 
- Javascript 第一阶段 学习使用总结
			JavaScript 是一种轻量级的编程语言.JavaScript 是可插入 HTML 页面的编程代码.脚本可被放置在 HTML 页面的 <body> 和 <head> 部分中 ... 
- 华为S5300交换机配置基于VLAN的本地端口镜像
			配置思路 1. 将Ethernet0/0/20接口配置为观察端口(监控端口) 2. 将VLAN 1.11.12.13.14配置为镜像VLAN 配置步骤 1. 配置观察端口 <Switch& ... 
- UIVIew之霓虹灯实现
			// // AppDelegate.m // NiHongPractice // #import "AppDelegate.h" #define kColorValue arc4r ... 
- CocoaPods报错:The dependency `xxx` is not used in any concrete target
			官网是这样给推荐的: 在创建Podfile的时候,用这种格式使用, platform :ios, '8.0' use_frameworks! target 'MyApp' do pod 'AFNetw ... 
- pythond对象、异常、反射的学习笔记
			python多继承,刚开始我是表示惊讶的,毕竟学的php,哪来的多继承?顶多也就是利用接口模拟多继承后者使用反射机制实现.那么还是来看看python的强大吧 1 首先,Python的类继承了多个类,那 ... 
- PHP高效的敏感词过滤方法
			<?php // 测试文件demo.php $badword = array( '张三','张三丰','张三丰田' ); // array_combine() 函数通过合并两个数组来创建一个新数 ... 
