在Android 程序中有四个部分
Activity 活动
Intent Receiver
Service 服务
Content Provider
一般程序都用到上述的组合实现。
一但你确定了你的程序时什么类型的组件,你应该在AndroidManifest.xml中列出。【在这个文件中,你可以声明这些组件的能力和需求】
1.1 Activity
活动时最基本的程序块,由一个继承Activity 的类来实现【通常是具有单一屏幕】。
这个类将显示一个组合Views的用户接口,来响应事件。
多数程序都由多个屏幕,每个屏幕由一个Activity 来实现,屏幕的移动通过启动一个新的Activity来实现,不同Activity之间可能共享传递数据。
以及当前屏幕跟后台暂停的屏幕之间的调度、堆栈管理,数据交互传输、基准屏幕管理都时活动需要研究的概念。
1.2 Intent and Intent Filters
Android 通过类Intent 来从一个屏幕移动到另外一个屏幕【其描述一个应用系统想做什么】
其中最重要的有两个部分概念:
动作 和 数据
动作的一般值有:MAIN,VIEW,PICK,EDIT 等
数据通过URI表示。
比如:为了查看一个人的合同信息,可以创建一个Intent其具有一个View 动作,以及代表人的URI数据。
另外一个相关类:IntentFilter,
一个Intent 是做东西的一个有效请求
Intent filter 是一个Activity 能够处理的什么Intent的描述。
比如:显示一个人的合同信息的活动,将发布一个IntentFilter ,其说明它知道如何处理动作视图,当应用数据来表示一个人。
Android 将在AndroidManifext.xml中指定IntentFilters
屏幕之间的导航通过解析Intents,往前跳转时,一个Activity调用startActivity(myIntent),此时系统将查找所有安装系统的Intents filters.并且获取能够跟myIntent匹配的活动。
新活动将被通知,调用。
解析Intents的过程在startActivity调用时发生,具有如下好处:
通过intent的方式来创建请求,使得Activities能够实现跨组件功能复用。
任何活动可以被具有同等的IntentFilter的新活动替换。
【设计框架要保证系统的服务模块具有统一的接口可以进行替换处理】
1.3 Intent Receiver
如果想在你的系统中执行对特定事件的响应时,你可以采用IntentReceiver。
如:电话响了,网络数据可用了,午夜定时到了。
Intent Receiver 不能显示UI【类似SAP 的R3 开发平台中的工作进程的后台进程】,虽然可以用NotificationManager来提示用户在有趣的事情发生时,通过在AndroidManifest.xml中注册。同时也可以通过Context.registerReceiver()代码进行注册。
不必要为了被调用的Intent receiver 来运行应用程序。系统将会启动你的程序在一个internt receiver 触发时。
系统也会发送其自己的intent 传播给其它的系统。通过Content.broadcastIntent()
1.4 Service
Service是那种没有UI的长时间运行的代码。【媒体播放器,在此播放器中,可能有一个或多个activites来允许用户选择歌曲或者开始播放;但是即使转向一个新的Screen,歌曲最好仍然播放】
此时媒体播放器应该利用Context.startService来启动一个服务在后台运行,系统会一直运行的,直到完成为至。
可以通过Context.bindService来连接一个服务,然后通过服务的接口交互。
更多详细请看:Life Cycle of an Adrioid Application
1.5 Content Provider
程序可以在文件/SQLLite 数据库存储数据。如果你想同别的程序共享数据,你可以用Content provider. 一个Content Provider 即是一个类其实现一套标准的方法让其它程序能够存取相应的数据的。
更多内容请关注:存取操作Content Providers.