Anatomy of an Android Application(中文翻译)
一个
Android应用程序由下面四种组件构成:
- Activity
- Intent Receiver
- Service
- Content Provider
并不是每一个应用程序需要全部的以上四个组件, 但是你会用他们的不同组合来完成你的应用程序。
一旦你决定你的应用程序需要哪些组件,你应该把他们写入一个叫做AndroidManifest.xml的文件。 这个文件是一个XML文件, 在这个文件里
你声明了程序的组件以及组件的功能和前提条件。更多的内容,请看下面的连接:
http://code.google.com/android/devel/bblocks-manifest.html
Activity
Activitiy 是四种组件中最常用的一种, 一个activity经常表现为你程序中的一个屏幕,每个activity都是通过对Activity基类的继承来实现
的。你的这个activity类应该显示一个由View组成的用户界面,并且能够对事件做出反映。大部分的应用程序由多个屏幕组成。例如, 一个文
字短信程序由第一个屏幕显示一个联系人列表用来发送信息,而第二个屏幕用来写短信息,另外一个屏幕查看短信息或对程序进行设置。每个
屏幕都是由一个activity来实现的。通过开始一个新的activity你可以进入到新的屏幕中。在某些情况下一个activity会给前一个activity返
回一个值--例如一个让用户进行照片选择的activity会把选择的照片送回至使用过它进行选择的那个activity。
当一个新的屏幕打开了, 前一个屏幕就暂停了,并且进入了一个堆栈。用户可以通过“向后”来直达以前用过个一个屏幕。如果它没有保留价值
了,屏幕也可以从堆栈中移出。Android从初始屏幕开始为每个应用程序保留一个堆栈。
Intent and Intent Filters
Android使用一个特殊的叫做Intent的类从一个屏幕移动到另一个屏幕。一个Intent描述了一个应用程序要完成的事情。Intent中最重要的两个
数据结构是行为(Action)以及这个行为所要操作的数据(the data to act upon)。 典型的行为是MAIN(activity的前门),VIEW,PICK,EDIT
等等。那些被操作的数据表现为URI。例如,为了看一个人(A)的Contact信息,你应该创建一个Intent,这个Intent拥有一个VIEW行为和一个
数据集,这个数据集通过URI指向了A。
与此相关的,有一个类叫做IntentFilter。如果说Intent是说明了对做某事提供了有效的反应,那么Intent Filter就是要说明一个对
activity(或者intent recevier,见下文)的哪些请求能够进行处理。一个能够显示某人联系信息的activity应该声明一个intetfilter,当VIEW指向了某人的时候,此
interfilter声明了它知道如何处理VIEW的行为,Acitivity的相关IntenFilter声明要写入AndroidManifest.xml文件中
从一个屏幕转换到另外一个屏幕是通过解析一个目的来完成的。例如:“向前”。一个activity执行startActivity(myIntent)。系统于是开始在
intent filter中寻找所有安装过的程序然后选择那个和myIntent最为匹配的那个activity.一个新的activity因为这个intent所驱动,开始运
行。当startActivity()被执行时, 一个intent的解析就开始进行处理了。这样做有两点好处:
1. 只需要简单以intent的形式发出一个请求,那么一个Activity的功能就可以从其他组件中开始复用了。
2. 一个activity可以在任何时候被新的、含有相同IntentFilter的Activity替代。
Intent Receiver
你可以利用IntentReceiver编程,如果你希望你的应用程序能够对一些扩展事件做出反映。例如,当有电话打进来时,当网络空闲,午夜等。
Intent Recevier不会显示一个UI,尽管如果有些有趣的事情发生了,他们也许会用到NotficationManager去警告用户。Intent Receivers应该
在AndroidManifest.xml中被声明,但是你也可以通过Context.registerReceiver()来声明。如果有必要当一个Intent Receiver被触发时,系统
会启动你的程序,你的程序不必运行它的IntentFilter以等待被呼叫。应用程序也可以通过Context.broadcastIntent()来对他们的intent进行
广播。
Service
服务是一直运行,但是没有用户界面的程序。一个好的例子就是媒体播放器播放曲目表中的歌曲。在一个媒体播放器程序中, 也许会有一个或
多个Activity,他们被用来进行选择和播放歌曲。然而一个正在播出的歌曲的句柄不能够被交出去,因为用户希望即使他们已经切换到了另外一
个屏幕,歌曲还是一直在播放的。这个时候媒体播放器应该用Context.startService()来启动一个服务在后台继续播放音乐。系统会保持歌曲
的播放直到它结束为止。(通过
阅读 http://code.google.com/android/intro/lifecycle.html你可以了解到更多的关于系统中的优先权的信
息)注意:你可以通过Context.bindService()来连接并(启动)一个服务(如果它不在运行中)。当你连接到一个服务的时候,你可以通过
它开放的接口和这个服务进行通讯。例如音乐播放,通过开放接口可以让你暂停或重播。
Content Provider
程序可以把他们的数据存储到一个文件中, 数据库中或者其它任何有对于它来说有意义的媒介中,如果你想让你的程序和其它的程序进行数据交换的话Content Provider是非常好用。content provider是一个类,它实现了一套标准的方法集,用来让其它程序存储和恢复数据,这些数据用来和他们(其他的程序)自己的content provider进行交换。更多的内容请看:
http://code.google.com/android/devel/data/contentproviders.html
分享到:
相关推荐
Anatomy-Physiology-of-an-Android ,Android最经典的介绍之一。该文档应该有很多地方都有,不过笔者还是决定上传。供大家阅读和参考。同时推荐另外一本书,Android框架解密。 韩国同学写的非常好的一本关于框架的...
这份压缩包包含的"Anatomy-Physiology-of-an-Android.pdf"文件,提供了全面的知识点,涵盖了Android系统的各个层面。 一、Android系统架构 1. **Linux内核层**:Android基于Linux内核,提供了硬件抽象层(HAL),...
本篇目的在尽量不触及技术细节的情况下简介 Android 架构,并探讨其设计的特殊处,以及在版权上的意义。主要资料来源为 Anatomy & Physiology of an Android,有兴趣深入研究的读者可参考。
10. The Anatomy of an Android Application 11. An Introduction to Kotlin 12. Kotin Data Types, VariablesandNullablty 1A katHnHwCaLCd 15. An Overview of Kotin Functions andLambdas 16. The Basics of ...
《OSPF:互联网路由协议的剖析》一书深入探讨了开放最短路径优先(OSPF)协议,这是TCP/IP网络中最常用的路由协议之一,以其在复杂互联网环境中的稳健性和高效性而著称。本书旨在为网络管理员、协议设计者以及网络...
《Android Anatomy and Physiology》是关于Android操作系统深度解析的资料,主要涵盖了Android系统的核心结构与运行机制。这篇文档可能源自2008年Google I/O大会的演讲,那时Android系统初露头角,开发者们对它的...
The Anatomy of a Large-Scale Hypertextual Web Search Engine(论文中英文对照),google创始人写的关于google技术的论文,适合SEO和研究搜索技术的用户
### OSPF 协议剖析 #### 一、OSPF 概览 **OSPF**(Open Shortest Path First,开放最短路径优先)是目前互联网领域内应用最为广泛的一种内部网关协议(IGP),尤其在广域网和企业网中扮演着极其重要的角色。...
尽管文档中提及了Dalvik,但需要注意的是,在安卓4.4版本以后,Dalvik被ART(Android Runtime)所取代,这是安卓的一个更大的运行时环境,它带来了更好的性能和更优的垃圾回收机制。ART支持即时编译(JIT)和安卓应用...
SIFT算法利用高斯差分(Difference of Gaussians,DoG)运算在金字塔结构中进行特征点的检测。 SIFT算法检测的特征点主要是一些具有blobs(斑点)形状的局部极值点。对于检测到的每个特征点,算法会计算其在图像中...
文章《The Anatomy of a Large-Scale Hypertextual Web Search Engine》(以下简称《Anatomy》)深入介绍了Google搜索引擎的设计理念和技术细节,这是一款能够高效抓取网页并建立索引的大型搜索引擎。 #### 二、...
### 大规模超文本网络搜索引擎解析 #### 一、引言与背景 互联网的迅猛发展对信息检索领域提出了全新的挑战。随着网页数量的急剧增长,以及越来越多的新用户加入到网络世界,如何高效地管理和检索这些海量信息变得...
《大规模超文本网络搜索引擎的解剖》 这篇论文由Sergey Brin和Lawrence Page撰写,两位作者来自斯坦福大学计算机科学系。他们的研究工作主要集中在如何利用超文本中的结构来构建一个大规模的搜索引擎——Google。...
Fundamentals of Anatomy and Physiology for Nursing and Healthcare Students is a succinct but complete overview of the structure and function of the human body, with clinical applications throughout....
each being used in thousands of test scenarios, to the point where service providers are more wary of getting paged for causing instability to internal testers than for causing an external outage.