在一个Android 应用中有如下的四种组件:
* Activity 活动组件
* Intent Receiver 接受处理组件
* Service 服务组件
* Content Provider 内容提供组件
一个Android 应用并不需要同时具有这四个组件,应用可以组合这些组件。
在应用中一旦决定使用了哪些组件,就需要在AndroidManifest.xml文件中列举出来。
Activity
Activities是最普遍的组件,在应用中通常用于显示一个屏幕(页面)的内容,仅仅一个屏幕(页面)的内容。开发人员需要从Activity基类继承下来,管理UI显示和UI的反馈事件。大多数应用程序都会有多个屏幕(页面)的内容,如一个文本消息的应用程序,第一个页面要显示联系人列表,第二个页面要写东西给选定的联系人,其他页面显示旧的文本内容或者其他等等。每一个页面都被当做一个Activity(活动组件),移动到其他页面意味着开始了一个新的Activity(活动组件)。在某些场景下,一个Activity可以返回值给前一个Activity,如一个页面选择了一张图片,可以返回这张图片给调用者(Activit)。
打开新的页面时,前一个页面将会暂停,放置到一个历史堆栈中,用户可以使用后退键浏览前面的页面,页面也可以从堆栈中删除。Android会为每一个从主页面home screen(idle界面?)启动的应用维护一个历史堆栈列表。
Intent and Intent Filters
Android使用一个叫Intent的类从一个页面移动到另外一个页面。一个Intent描述了应用将要做的事情,就是一种动作行为。最重要的有两点:动作的类型和动作所捎带的参数(数据),典型的动作类型为MAIN(activity的正门),VIEW, PICK, EDIT等等。参数数据以URI形式来表示。例如,为了查看一个人的联系信息,需要创建一个Intent,动作类型为VIEW,人名为参数数据(需要格式化为URI)。
一个Activity为了表明能够处理某些Intent,Android设计了一个相关的类IntentFilter,Activity在 IntentFilter中决定它能够处理的Intent动作类型,IntentFilter需要在AndroidManifest.xml文件中进行声明。
从一个页面到另外一个页面跳转的依据在于发出的Intent,为了向前浏览,Activity调用startActivity(myIntent). Android系统在所有安装的应用程序中查找intent filters,找出最能够匹配myIntent的Activity。新的activity将被启动,intent被传入。有如下两个关键点:
* Activities 能够重新被使用
* Activities 在任何时候都可以被替换,只要一个Activity设置了相同的IntentFilter
Intent Receiver
在应用程序中,针对外部事件需要执行一些动作来反馈,可以使用IntentReceiver类。例如:来了一个电话,或者数据通道可用,或者晚上到了。 Intent Receiver没有UI的显示,尽管可以通过NotificationManager 通知用户某些有趣的事情发生了。Intent Receivers也需要在AndroidManifest.xml中进行声明,当然也可以在程序中调用 Context.registerReceiver()接口动态声明。同时在应用程序没有跑起来的时候也能够调用Intent Receivers,当一个Intent Receivers被触发时,Android系统将会启动这个应用程序。应用程序也能够通过Context.broadcastIntent()广播他们的Intent。
Service
一个Service是没有UI,一直运行在后台的代码组件。一个好的例子:播放器从一个播放列表中播放歌曲。在一个播放器应用中,大概会有一个或多个 Activity组件允许用户选择歌曲和播放它们,歌曲播放代码不应该放在Activity组件中,因为我们希望一直能够听歌,甚至切换到了其他页面。所以,播放器页面应该启动一个服务组件(Context.startService())来播放歌曲。Android系统将会保持service运行直到它结束(可以参考“Android 应用的生命周期”一文)。可以使用Context.bindService()接口连接上一个服务(如果这时候服务没有启动,连接会导致服务启动),连接上之后,就可以和服务进行通讯。像播放器的例子,可以允许暂停,重绕等等。
Content Provider
应用程序可以在文件中,数据库或者其他设备存储他们的数据。Content Provider用于将各个应用程序的数据进行共享,Content Provider是一个类,执行一套标准的方法,让其他的应用程序存储和获取Content Provider所处理的数据。
分享到:
相关推荐
Android 的应用程序结构分析:HelloActivity
Google Android 应用 程序 开发 与 研究论文
深入浅出 Android Google手持设备应用程序设计 电子书 pdf
第二个应用程序示例涉及比较复杂的 Android 特性,包括联系人搜索和 Google Maps 地址查找。要想从本教程获得最大收益,具备移动开发经验会有帮助,但不是必需的。开发 Android 应用程序需要 Java™ 编程技能,但是...
让我们将您的网站和Web应用程序转换为Android应用程序。此应用程序模板支持各种Web应用程序/网站(包括HTML,PHP,WordPress,Progressive Web Apps,HTML 5 Games,WiX,Jimdo,apprat.io,bubble,Webflow,...)...
Google Android 2手机应用程序开发入门完整实例配合原书一起使用
android应用程序设计,高焕堂,第一步google手机应用开发中文资料
《Android应用开发范例精解》通过通俗易懂的开发实例及项目案例,详细介绍了Android应用开发的知识体系及实用开发技术。 《Android应用开发范例精解》共14章,分为3篇。第1篇为基础篇,涵盖Android背景及开发环境和...
Google+Android应用框架原理与程式设计36技
1.3 Android应用程序中的资源/7 1.4 Android的应用程序组件/8 1.4.1 Activity(Android的窗体)/8 1.4.2 Service(服务)/9 1.4.3 BroadcastReceiver(广播接收器)/9 1.4.4 ContentProvider(内容提供者)/10
Android高级应用源码-android应用内购买 google app veding billing.zip
Android应用程序组成,Android UI(用户界面)基础,Android UI系统控件基础,Android UI系统控件进阶,Android UI菜单、对话框,Android组件广播消息与服务,Android数据存储与访问,手机通信服务,Google API服务...
android4.2信息 Mms应用程序源码,谷歌官方的源码,对信息 Mms感兴趣的可以下载下来仔细研究和修改
[Android应用程序开发].Android.Application.Development.-.Programming.with.the.Google.SDK.(O'Reilly,.2009,.0596521472)
Android 是一个开源的,基于 Linux 的移动设备操作系统,如智能手机和 平板电脑。Android 是由谷歌及其他公司带领的开放手机联盟开发...Android 应用程序编程环境设置开始,然后深入 Android 应用程序开发的 各个方面。
Android 会同一系列核心应用程序包一起发布,该应用程序包包括 email 客户端, SMS 短消息程序,日历, 地图,浏览器,联系人管理程序等。所有的应用程序都是使用 JAVA 语言编写的。 应用程序框架 开发人员也可以...
最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件。...
Google Android应用案例开发大全(随书光盘)【源码】第11章
Android手机系统是Google推出的一个基于Linux的操作系统,目前市场占有率很高,而Android应用开发则是通过使用Android软件开发套件(Android Software Development Kit,简称Android SDK)的工具和技术,制作各种...
Google Android 2手机应用程序开发入门的实例 此版本为分章实例