ZNDS智能电视网 推荐当贝市场

TV应用下载 / 资源分享区

软件下载 | 游戏 | 讨论 | 电视计算器

综合交流 / 评测 / 活动区

交流区 | 测硬件 | 网站活动 | Z币中心

新手入门 / 进阶 / 社区互助

新手 | 你问我答 | 免费刷机救砖 | ROM固件

查看: 19166|回复: 1
[教程]

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

[复制链接]
发表于 2013-8-28 16:30 | 显示全部楼层 |阅读模式
>  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 )。   

上一篇:Android程序设计(12)-如何在Eclipse上开发Android应用程序(2)
下一篇:Android程序设计(26)-如何进行专案除错,以「Hello,Android!」
发表于 2016-3-10 19:52 | 显示全部楼层
很给力,ZNDS有你更精彩!
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|新帖|标签|软件|Sitemap|ZNDS智能电视网 ( 苏ICP备2023012627号 )

网络信息服务信用承诺书 | 增值电信业务经营许可证:苏B2-20221768 丨 苏公网安备 32011402011373号

GMT+8, 2024-3-28 19:16 , Processed in 0.059290 second(s), 15 queries , Redis On.

Powered by Discuz!

监督举报:report#znds.com (请将#替换为@)

© 2007-2024 ZNDS.Com

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