Android应用程序由若干个不同类型的组件组合而成,每一个组件具有其特定的安全保护设计方式,它们的安全直接影响到应用程序的安全。Android应用程序组件的主要类型有:活动(Activity),服务(Service),广播接收者(Broadcast Receiver),内容提供者(Content Provider),意图(Intent),小组件(Widget),通知(Notification)等。其中最重要的是前5种。在决定使用以上哪些组件来构建Android应用程序时,应该将它们列在AndroidManifest.xml文件中,这个文件用于声明应用程序组件以及它们的特性和要求。下面先分别对活动(Activity),服务(Service),内容提供者(Content Provider),广播接收者(Broadcast Receiver)和意图(Intent)5种组件加以介绍。
活动(Activity)
Activity是应用程序的表示层,为用户展示界面,一个Activity通常展现为一个可视化的用户界面,比如一个手机的联系人功能可能包含一个显示联系人列表的Activity,一个可编辑联系人信息的Activity,以及其他一些查看或修改信息的Activity。每一个Activity都是相对独立的,这些Activity一起工作,共同组成了一个联系人应用程序。一个应用程序可以包含一个或多个Activity,通常每个应用程序运行后都会启动一个Activity展现出第一个界面,在当前展现给用户的Activity中启动一个新的Activity或调用其他应用程序的Acitivity,实现从一个界面跳转到另外一个界面。
服务(Service)
Service在后台运行,没有展现出用户界面。它们可以为前台的Activity提供数据源更新,并触发通知。例如,用户处理其他事情的时候可以启动一个Service播放背景音乐,或者启动邮件客户端的一个Service通过间断性地连接邮件服务器下载新邮件。
Service的另一种重要的用途为通过AIDL(Android Interface Definition Language,Android接口描述语言)实现进程间通信。例如,在某一应用程序中,其他应用程序组件可以直接与该应用程序后台运行的Service进行交互;另一方面,多个应用程序通过Service,可以在保证进程安全的前提下,实现它们之间的通信 。
内容提供者(Content Provider)
Content Provider是一种应用间数据共享的机制,提供了多个应用程序共享存储数据的方式,相当于一种跨应用程序的数据操作,一个应用程序可以允许其他应用程序通过Content Provider对其SQL数据,图像,声音或其他数据类型进行增,删,改,查等操作。Content Provider为数据进行操作提供了统一的接口,为应用程序提供了4个接口函数:intsert,update,delete及query,Content Provider屏蔽了数据操作的具体实现细节,应用程序只需要通过Content Provider调用相应接口函数即可完成操作,这种方式大大简化了跨应用程序的数据操作。