`
mapdigit
  • 浏览: 243418 次
文章分类
社区版块
存档分类
最新评论

Android简明开发教程四:Android应用基本概念

阅读更多

Android平台的一个显著的特点是“低耦合”。Activity是Android应用的一个最基本的用户UI模块。如果采用Windows Form应用作为参照,Activity相当于Windows中的WinForm。和Windows 应用不同的是,运行一个Activity或是Activity之间的交互是通过消息来实现的。也就是说如果想在起动一个Activity或是在一个Activity中启动另一个Activity,是通过发送Intent消息来触发,而不像Windows WinForm应用,需要调Form示例的Show或是Load方法来实现。通过Intent消息来实现Activity之间的交互,则最大程度上减小了模块之间的耦合度。这种机制类同Subscriber/Publisher机制。

Android平台的另外一个重要特性是“重用”。一个Android应用可以有多个Activity组成。拿扑克牌做比方,Android应用相当于扑克牌的盒子,盒子里的每张牌就是一个相对独立的Activity。这个Android应用运行时想当于从扑克牌中抽取牌叠放在一起,最先抽出的牌就是Android应用的主Activity,主Activity可以在调用其它Activity(通过发Intent消息),被触发的Activity就像扑克牌一样发在主Activity上面。这样就形成一个“Activity”栈。在设备上按“Back”则可以如浏览器一样回到上一个Activity。 Android手机上每个应用都是一样的结构。“重用”指Android应用在运行时,可以触发其它应用中定义的Activity。比如说在GTalk中想显示某个朋友在地图上的位置。而GoogleMap应用可以显示地图。GTalk不需要重复同样的代码或是对于类似的Activity。可以直接通过Intent消息来启动GoogleMap中的MapViewActivity。

下图显示了Android应用的基本组成部分。

除了Activity之外,Android也可以实现Service,Service类同Windows Service,一般在后台运行,不含用户界面。Brodcast Receiver可以用来响应一些系统消息。基本功能有点类似Java ME中的PushRegistry。 比方说你想在收到短信时触发你的应用,可以在Android应用的Manifest文件中定义一个Broadcast Receiver来触发一个Activity。

如上图所示,Android应用中,Application对象好像一个容器,里面可以包含多个Activity,多个Service或是多个Broadcast Receiver。这些Activity,Service,Broadcast Receiver相对独立,相互之间交互只能通过Intent 消息。如同Java ME的MIDlet的JAD文件一样,每个Android应用都有一个Manifest文件,文件名固定为AndroidManifest.xml。Android应用中定义的Activity,Service,Broadcast Receiver等都需要定义在这个Mainifest文件中才能被本应用或是其它应用所调用。 这里还是借用Publisher/Subscriber的概念来说明。 一个Activity,Service等 如果能被调用的话则需要在Mainifest中Subscriber某类消息。

<activity android:name=”.HelloWorld”
android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>

上面是HelloWorld中主Activity在AndroidManifest.xml的定义,定义了这个Activity的对应的class,以及可以触发该Activity 的intent-filter ,(相当于Subscriber某种消息),但用户点击该应用图标时,Android操作系统将发送一个Intent消息,Android系统检查subscribe该Intent消息的Activity,Service或是Broadcast Receiver,如果找到,则其动该Activity,Service或是Broadcast Receiver。对于HelloWorld,则在屏幕上显示“Hello World”。 除了系统可以发送Intent外,Android引用也可以通过startActivity(Intent) ,StartService(Intent)来向启动其它Activity或是Service。Intent可以带传入数据(参数)。即使在同一个应用中,也需要通过Intent来传送信息,这样大大降低了应用中各个模块之间的耦合度,从而可以无缝更换应用中的某个模块而不会影响其它部分。 刚开始接触Android这种机制时可能会觉得不如WinForm 的 (new Form1()).Show()来的直接方便。但从应用的可维护性,可扩展性来看,Android这种低耦合设计是非常有利的。 此外,如果需要在多个Activity这间共享一些数据,可以通过扩展Application类实现,在Application类中定义的变量可以被应用中所有Activity所访问。

分享到:
评论

相关推荐

    Android OpenGL ES 简明开发教程四:3D 坐标变换

    Android OpenGL ES 简明开发教程四:3D 坐标变换

    Android OpenGL ES 简明开发教程

    Android OpenGL ES 简明开发教程

    Android简明开发教程二十四篇及示例代码下载.pdf

    Android简明开发教程二十四篇及示例代码下载.pdf

    android开发教程CHM

    android开发教程CHM版本的,清晰直观,详细讲述了android开发所有的机制以及原理,并配有详细例子代码讲述~

    Android OpenGL ES 简明开发教程相关源码真正的3D图形

    Android OpenGL ES 简明开发真正的3D图 Android平台提供的OpenGL ES API主要定义在包android.opengl ,javax.microedition.khronos.egl ,javax.microedition.khronos.opengles ,java.nio 等几个包中

    Android_OpenGL_ES_简明开发教程

    Android_OpenGL_ES_简明开发教程,介绍了OpenGL_ES在android下的简明开发方法

    Android 开发 简明教程 中文版

    这是我们开发时,老师给的资料,做的比较详细。这里免费赠送。希望下过资源的朋友,能够评论一下。方便后来人决定是否要下载

    Android手机应用开发简明教程.rar

    Android手机应用开发简明教程.rar

    Android OpenGL ES 简明开发教程相关源码添加颜色

    Android OpenGL ES 简明开发教程相关源码添加颜色 简单的上色方法叫做顶点着色(Vertxt coloring),可以使用单色,也可以定义颜色渐变或者使用材质(类同于二维图形中各种Brush类型)。

    Android OpenGL ES 简明开发教程相关源码材质渲染

    Android OpenGL ES 简明开发教程相关源码材质渲染 使用材质渲染,首先需要构造用来渲染的Bitmap对象,Bitmap对象可以从资源文件中读取或是从网络下载或是使用代码构造

    Android简明应用程序开发[原创]

    第一章 Android开发环境介绍 6 一、下载与安装 6 1.1.1 SDK安装 6 1.1.2 模拟器设置和启动 7 1.1.3 ADT安装 10 二、创建Android工程 13 三、手动选择模拟器 16 四、真机调试 18 五、小结——恭喜您迈出...

    Android2.03开发教程

    安卓开发简明教程 Android为Google公司推出的手机操作系统,现在同苹果的IOS系统等成为了目前世界上主要的手机操作系统。同苹果的封闭不同,Android是开源的,目前已经成为愈来愈多的公司和程序员的选择。 本章主要...

    Android OpenGL ES简明学习资料

    含有以下4个pdf,主要介绍基本概念和用法,对初学者非常有用。...Android OpenGL ES 简明开发教程.pdf Android_OpenGL_ES_book.pdf OpenGL ES 2 for Android.pdf Apress.Pro.OpenGL.ES.for.Android.Feb.2012.pdf

    简明python教程-Python简明教程.pdf

    简明python教程-Python简明教程 Python⼀⼩时快速⼊门 1.Python简介 pylogo.png Python是⼀种相当⾼级的解释性程序设计语⾔,完成同⼀个任务C语⾔可能需要⼏千⾏代码 Java要写100⾏,Python可能只需要20⾏。...

    OpenGlDemos

    在解析Android ApiDemos 中OpenGL ES示例前,有必要对OpenGL ES 开发单独做个简明开发教程,可以帮助从未接触过3D开发的程序员了解OpenGL 的开发的基本概念和方法,很多移动手机平台都提供了对OpenGL ES 开发包的...

    Python简明教程.pdf

    Python简明教程 Python简明教程 Python⼀⼩时快速⼊门 Python⼀⼩时快速⼊门 1.Python简介 1.Python简介 pylogo.png Python是⼀种相当⾼级的解释性程序设计语⾔,完成同⼀个任务C语⾔可能需要⼏千⾏代码 Java要写100...

    一看就懂的Android APP开发入门教程

    主要介绍了Android APP开发入门教程,从SDK下载、开发环境搭建、代码编写、APP打包等步骤一一讲解,非常简明的一个Android APP开发入门教程,需要的朋友可以参考下

    java版飞机大战源码-34563:34563

    简明开发教程 - v1.0.epub Android RoboGuice 使用指南 - v1.1.epub Android Studio 操作手册 - v1.1.epub Android Weekly 中文版 - v1.0.epub Android 坦克大战游戏 - v1.0.epub Android 实战技巧 - v1.1.epub ...

Global site tag (gtag.js) - Google Analytics