Android应用程序组件

如果你想从事Android应用程序开发,那么了解Android应用程序的思想是非常必要的,Android没有应用程序的统一入口(例如Main()方法),各个应用之间是相互独立的,并且运行在自己的进程当中。根据完成的功能不同,Android划分了四类核心组件类:Activity,Service,Broadcast Receiver 和ContentProvider。相同组件和不同组件之间的导航通过Intent完成。

1 Activity

    Activity是Android组件中最基本也是最为常用的一种组件,在一个Android应用中,一个Activity通常就是一个单独的屏幕,每一个Activity都被实现为一个独立的类,并且继承于Activity这个基类。这个Activity类将会显示由几个Views控件组成的用户接口,并对事件作出响应。大部分的应用都会包含多个屏幕,例如,一个短消息应用程序将会有一个屏幕用于显示联系人的列表,第二个屏幕用于写短消息,同时还会有用于浏览旧消息及进行系统设置的屏幕。每个这样的屏幕都是Activity。

    通过调用startActivity()方法可以从一个屏幕导航到另一个屏幕,打开Activity的条件封装在Intent中。

    当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史堆栈中。用户可以返回到历史堆栈的前一个屏幕。当屏幕不再使用时,还可以从历史堆栈删除。默认情况下,Android将会保留从主屏幕到每一个应用的运行屏幕。

2 Service

     一个Service是一种长生命周期的,没有用户界面的程序。比较好的一个例子就是正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用程序中,应该会有多个Activity,让使用者可以选择歌曲并播放。然而,音乐重放这个功能并没有对应的Activity,因为使用者会认为在导航到其它屏幕时音乐应该还在播放。在这个例子中,媒体播放器这个Activity会使用Context.startService()来启动一个Service,从而可以在后台保持音乐的播放。同时,系统将保持这个Service一直执行,直到这个Service运行结束。

    另外,我们还可以通过使用Context.bindService()方法连接到一个Service上(如果这个Service还没有运行则将启动它)。当连接到一个Service后,我们还可以通过Service提供的接口与它进行通信,如暂停,重播等。

3 Broadcast Receiver

    Broadcast Receiver是为了实现系统广播而提供的一种组件。例如,我们可以发出一种广播来检测手机电量的变化,这个时候可以定义一个Broadcast Receiver来接收广播,当电量低时通知用户

4 ContentProvider

    我们知道,Android各个应用程序之间是相互独立的,各个组件运行在不同的进程中,这就意味着数据是不能共享的。如何使得不同组件数据的共享呢?Andorid通过使用ContentProvider来实现。

posted @ 2012-06-04 08:52  Johnny Yan  阅读(243)  评论(0编辑  收藏  举报