您的位置:首页 > 移动开发 > Android开发

《Android开发精要》读书笔记——Android应用模型

2016-03-01 10:51 295 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/ZhikuiGeng/article/details/50770809

Android应用模型的设计思想取自于web2.0的Mashup概念,是基于组件的应用设计模式。在该模型下,每个应用都由一系列的组件搭建而成,组件通过应用的配置文件描述功能。Android依照组件的配置信息,了解各个组件的功能并进行调度。
Android中有四大组件,分别是界面组件Activity、服务组件Service、数据源组件Content Provider以及触发器组件Broadcast Receiver。每个Android应用,大到功能庞大的浏览器应用,小到入门必学的“Hello World”,都由这四类组件共同搭建而成。

1. 基于Mashup的应用设计

1.1 Android中的Mashup

Android中的Mashup,是将应用切分成不同类型的组件,通过统一的定位模型和接口标准将它们整合在一起,来共同完成某项任务。

1.2 基于Mashup的Android应用模型

在Mashup的概念下构造Android应用,有三个基本要素:组件(Component)、连接和配置。
组件
组件就是特定功能和接口规范的实现单元。
每类组件都有着不同的设计目标,或者负责界面展示,或者负责后台服务,或者负责数据提供,或者负责事件监听。
从代码来看,组件就是派生自特定接口或基类的子类实现。比如,界面组件Activity,就是拍生子android.app.Activity类的子类实现。
每个Android组件都是一个黑盒模块。它们依照系统设计的接口和规范实现相关的功能。
组件的构造、销毁等生命周期管理工作,都是由Android中的组件管理服务统一负责。它了解所有组件的功能和特征,会选择合适的时机构造和销毁所需的组件。

连接
连接是一个抽象的概念,指的是组件与组件之间的通信信道,是Android为不同类别的组件之间进行调用和通信预设的模式。
它的实现方式根据连接两端组件类别的不同而有所变化。比如,与界面组件的通信连接,需要通过Intent(android.content.Intent)对象来建立;而与数据源组件的通信,则通过URI地址来定位并搭建连接通路。
连接的构造,是由请求连接的组件、被连接的实现组件和组件管理服务共同维护的。请求连接的组件需要按照规范描述出所需的组件的类型和特征;实现组件,同样需要依照规范描述出它们的功能,并完成对应功能的实现;而组件管理服务会依照请求者的描述找到符合的实现组件。

配置
配置是用来描述组件的功能和实现特征的信息。
在Android中,每个应用都由名为AndroidManifest.xml的配置文件,其中包括了该应用中所有组件的相关信息,包括组件的名称、类型、能够处理的数据格式、所需的全县信息等。
Android的组件管理服务,就是通过配置文件中的信息去了解每个组件的特征。因此,一个组件只有将相关信息写入了配置文件,才会被系统服务认知,继而又被调用的机会。
我们通过发送邮件的例子,来进一步介绍组件、连接、配置以及基于Mashup的组建模型。

1.3 基于Mashup的应用架构特征

基于Mashup的应用,其核心是组件,应用边界、进程边界和网络边界在Android中都变得模糊而且不那么重要了。在Android中,组件执行时的聚合单元是任务(Task),每个任务都由若干个界面组件对象构成,这些组件可能来自不同的应用,运行在不同的进程中,它们彼此独立,就像黑盒子一样,无需关注具体调用者或被调用者的实现细节。组件间的数据传输,都是通过消息、进程间的通信模型等序列化数据传输的方式来进行,而不是通过对象指针的直接传递,这就使得Android的应用天生具有了良好的跨进程特征。在实际的Android开发中,开发者通常不需要关注应用进程的问题,而只需要把精力放在组件的管理和控制上即可。
基于组件的设计,不仅使得应用具有跨进程性,而且还具有跨网络的特性。当调用方组件发起请求,希望第三方组件帮助提供所需的功能或数据时,能够响应该请求的,不仅可以是一个本地已安装应用的组件,还可以是符合该请求的web页面,C/S和B/S的差别在Android上也变得模糊了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐