Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 578|回复: 0

Android程序设计(29)-Android应用程序的剖析 -  Android

[复制链接]

该用户从未签到

发表于 2011-10-25 08:50:33 | 显示全部楼层 |阅读模式
  Android应用程序基本上是由下面四个区块组合而成:

  1.Activity

  2.Broadcast Intent Receiver

  3.Service

  4.Content Provider

  并非所有的应用程序都需要有这四种区块来组成,依开发人员的应用程序可能用到其中几个区块来组合。

  一旦开发人员决定在应用程序中使用那些区块来组成,开发人员应该在AndroidManifest.xml文件中列出来。这是一个XML文件,开发人员可以在其中声明应用程序用到的区块组件以及此区块提供的功能和必要的条件。在Android Manifest File Document有完整的细节描述。(请参考下述网址:http://code.google.com/android/devel/bblocks-manifest.html

  而下述XML内容就是一个简单的AndroidManifest.xml范例。如图80所示。在这个范例中只有放一个Activity元件,就是在<activity>XML元素中。

  首先,我们先来看第一个区块Activity

  Activity

  Activities是Android四个区块中最常用的一种。在应用程序中,一个Activity通常就是一个单独的画面。每一个Activity通过一个继承了Activity基本类别来实现。这个类别将会显示一个或有多个View物件的界面。并且回应一些事件功能。

  大部份的应用程序都会由多个画面来组成。例如:一个文字讯息传送程序会有一个画面是用来显示要发送讯息的联络人清单,另一个画面用来输入要传送的讯息内容,最後一个画面用来查阅旧的讯息内容或是改变程序的设定画面。

  每一个画面都会实作在一个Activity里。切换到另一个画面就是去启动另一个Activity起来。在某些情况下,Activity可以回传一个数值给之前的一个Activity,例如:一个Activity让使用者选取一张照片,然後告知上一个Activity使用者选取了那张照片。

  当一个新的画面打开时,之前的画面会暂停并且系统会将它放进历史堆叠中。使用者可以向後导航到之前打开的历史画面。画面也可以在不适合继续保存时,从历史堆叠中移除。Android为每一个以主画面(Home)打开的应用程序保持其历史堆叠。

  Intent and Intent Filters:

  Android使用一个特殊的类别叫做Intent,来在画面之间做移动的动作,Intent是用来描述一个应用程序想要做什麽事情。在Intent资料结构中两个最重要的部份,一个是动作及对资料产生什麽样的反应。

  动作主要的内容有MAIN(程序的进入点),View,Pick,Edit等动作。而资料则是用URI的形式来表示。

  例如:想要查看一个联络人的讯息,开发人员需要建立一个Intent,包含了View的动作及指向该联络人资料的URI描述句。

  另一个相关的类别是Intent Filter。当Intent要求去做某些事情时,Intent Filter被用来描述这个activity能够做些什麽事情。例如:一个activity要能够显示联络人资料,就必需要在Intent Filter说明要如何处理联络人资料并且用ACTION_VIEW来呈现出来。Intent Filter都会宣告在AndroidManifest.xml档案中。

  而画面的切换则是由resolving intent来实现。当使用者想要产生新的画面时,现行的activity就使用startActivity(myIntent)方法。然後系统会根据所有已安装的应用程序所定义的intent filter来看那个应用程序是最适合myIntent。当startActivity方法被呼叫时,resolving Intents的处理过程是伴随而来的。

  而resolving Intent提供开发人员有两个好处:

  A.让Activities可以很容易的利用Intent的机制去使用其他应用程序的功能。

  B.让Activities可以很容易的在任何情况下,由新的Activity来取代。

  接下来是Broadcast Intent Receiver

  Broadcast Intent Receiver:

  当开发人员希望应用程序来对外部的事件做一些处理时,可以使用Broadcast Intent Receiver。例如:当电话响时,或是网路资料可以使用时,或是时间到了午夜时。Broadcast Intent Receiver并不能拿来显示出使用者介面,它必需利用Notification Manager来通知使用者所设定的事件已经触发。

  Broadcast Intent Receiver同样可以在AndrodiManifest.xml档案中宣告,也可以在撰写程序码,利用 Context.registerReceiver()方法来宣告Broadcast Intent Receiver。

  应用程序并不会因为Broadcast Receivers被呼叫而被它执行起来。而且当Broadcast Receivers被触发时,系统会依宣告的需求来执行相对应的应用程序。应用程序可以利用 Context.sendBroadcast()方法来发出他们自己的intent broadcast给其他的应程序。

  接下来是Service

  Service:

  Service是没有使用者介面,而且是可以长时间运作的程序码。例如:像多媒体播放器,再播放列表中的歌曲。对於一个多媒体播放器的应用程序,可能会有一个或多个Activities在运行,使用者选择歌曲并播放,然而,并不会有一个Activity来处理播放音乐,因为使用者可能开启不同的应用程序时,音乐还是要继续播放。

  此时,多媒体播放器的Activity就会使用 Content.startService()方法来让音乐持续播放。系统会一直播放音乐,直到音乐结束。

  当应用程序进入背景状态时,开发人员可以利用 Content.bindService()方法来跟Service进行连结的动作。当连接到一个Service时,开发人员就可以透过该Service开放出来的介面跟应用程序进行沟通。以刚才播放音乐的Service来看,Service可能允许使用者进行音乐的暂停、倒转、快转等动作。

  最後我们介绍Content Provider

  Content Provider:

  应用程序可以将应用程序的资料储存到档案、SQLite资料库或其他的机制储存起来。当开发人员希望应用程序的资料可以被其他应用程序共享时,Content Provider就会非常有用。Content Provider实现了让应用程序之间互相分享资料的机制。在Accessing Content Providers有完整的细节描述。(请参考下述网址:http://code.google.com/android/devel/data/contentproviders.html )。
回复

使用道具 举报

该用户从未签到

发表于 2011-10-25 08:50:36 | 显示全部楼层

Re:Android程序设计

谢谢谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 14:03 , Processed in 0.365709 second(s), 45 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表