Android 应用程序组件 Android 应用程序最大的一个特点就是每个应用都由若干组件构成。而且各个应用程序的组件还可以相互调用(需要在代码
中设置相应权限)。例如假设我们需要编写一个内嵌于网页的程序,那么我们无需亲自编写浏览器,而是可以直接调用系统自带的Chrome Lite浏览器
组件。又如假设我们编写了两个应用程序,其中一个程序中有列表显示图标的组件,那么我们在另一个应用程序中就可以使用该组件,而不需要在编写
该功能。也就是说,不同于我们平常编写的程序,Android的应用程序不是单一入口,而是可以从代码的不同位置启动。这就要依靠组件来实现。
Android应用程序的组件有以下四种:
1. Activities 一个Activity实际上表现出来的就是一个程序的界面。这个界面可能有许多不同的形式,比如有列表形式,有文字形式,有图像格子等
形式。一个应用程序也可能有不止一个Activity。比如一耳光短消息的程序,需要有列表显示所有消息的Activity,还至少需要一个编辑短信的Activity
,还可能需要设置、菜单等界面。 每个Activity都有一个默认的窗口用于绘制界面,一般情况下,它是充满全屏的,但是我们可以通过程序控制它,使
其小于屏幕大小,也可以控制其浮动于其他窗口之上(如Android中的Toast信息)。 Activity中显示出来的内容其实是由view堆叠形成的,view是由
View基类派生出来的各种形式的界面元素,如ListView,GridView等等,通过组合这些view,就形成了一个可见的Activity。我们可以用
Activity.setContentView()方法来设置一个Activity中所要显示的view。
2. Services Service是一种没有界面的组件,同我们平常在Windows或Linux系统中所理解的“服务”一样,Android上的service也是运行在后台的
,运行时间可以从系统启动到系统关闭为止。对于许多应用程序来说,service组件式至关重要的。以下载管理器为例,用户肯定希望能够在切换到其他
程序时仍然在后台继续下载,这就需要用到service完成下载工作。而显示下载进度、已下载文件等信息则由Activity完成,同时我们还希望控制下载过
程,如停止、继续等,这就需要Activity与service之间进行通信。Android允许activity连接到或者绑定到service上,这样就可以让用户在界面上控制
后台service的行为。
3. Broadcast receivers Broadcast意为广播消息,Android系统自身会发出许多广播消息,如电量不足,用户修改了全局设置等,各个应用程序也
以向整个系统广播消息,如文件下载。 Broadcast receiver则是程序中专门用来接收广播消息的组件,它没有界面显示,只负责监听、接收广播消息
,然后根据程序逻辑,启动其他组件去处理广播消息。它可以启动一个Activity来同用户交互,也可以使用NotificationManager向用户发出通知。
NitificationManager的 通知形式有许多种,不如说振动、响铃、闪LED灯,还可以在Android界面的消息栏处显示信息。
4. Content providers Content provider是一种为其它应用程序提供数据的组件。这些数据可以保存在文件中,也可以保存在SQLite数据库中,还
可以以其他任何有效的方式保存。ContentProvider类为我们提供了一系列保存数据的方法供我们调用,可以很方便地存储数据。其它应用程序在需要
使用这些数据时,可以用ContentResolver对象,使用其中的方法。ContentResolver可以与任何contentprovider交互,获取其中的数据。 只需要
某个组件,Android就会尽力保证它的可用;如果该组件还没有启动,就启动它,如果该组件所属的应用程序还没拥有一个进程,则为它启动一个进程
,如果系统资源不足以容纳一个新的进程,则将后台的某个进程杀死为新进程腾出资源。
中设置相应权限)。例如假设我们需要编写一个内嵌于网页的程序,那么我们无需亲自编写浏览器,而是可以直接调用系统自带的Chrome Lite浏览器
组件。又如假设我们编写了两个应用程序,其中一个程序中有列表显示图标的组件,那么我们在另一个应用程序中就可以使用该组件,而不需要在编写
该功能。也就是说,不同于我们平常编写的程序,Android的应用程序不是单一入口,而是可以从代码的不同位置启动。这就要依靠组件来实现。
Android应用程序的组件有以下四种:
1. Activities 一个Activity实际上表现出来的就是一个程序的界面。这个界面可能有许多不同的形式,比如有列表形式,有文字形式,有图像格子等
形式。一个应用程序也可能有不止一个Activity。比如一耳光短消息的程序,需要有列表显示所有消息的Activity,还至少需要一个编辑短信的Activity
,还可能需要设置、菜单等界面。 每个Activity都有一个默认的窗口用于绘制界面,一般情况下,它是充满全屏的,但是我们可以通过程序控制它,使
其小于屏幕大小,也可以控制其浮动于其他窗口之上(如Android中的Toast信息)。 Activity中显示出来的内容其实是由view堆叠形成的,view是由
View基类派生出来的各种形式的界面元素,如ListView,GridView等等,通过组合这些view,就形成了一个可见的Activity。我们可以用
Activity.setContentView()方法来设置一个Activity中所要显示的view。
2. Services Service是一种没有界面的组件,同我们平常在Windows或Linux系统中所理解的“服务”一样,Android上的service也是运行在后台的
,运行时间可以从系统启动到系统关闭为止。对于许多应用程序来说,service组件式至关重要的。以下载管理器为例,用户肯定希望能够在切换到其他
程序时仍然在后台继续下载,这就需要用到service完成下载工作。而显示下载进度、已下载文件等信息则由Activity完成,同时我们还希望控制下载过
程,如停止、继续等,这就需要Activity与service之间进行通信。Android允许activity连接到或者绑定到service上,这样就可以让用户在界面上控制
后台service的行为。
3. Broadcast receivers Broadcast意为广播消息,Android系统自身会发出许多广播消息,如电量不足,用户修改了全局设置等,各个应用程序也
以向整个系统广播消息,如文件下载。 Broadcast receiver则是程序中专门用来接收广播消息的组件,它没有界面显示,只负责监听、接收广播消息
,然后根据程序逻辑,启动其他组件去处理广播消息。它可以启动一个Activity来同用户交互,也可以使用NotificationManager向用户发出通知。
NitificationManager的 通知形式有许多种,不如说振动、响铃、闪LED灯,还可以在Android界面的消息栏处显示信息。
4. Content providers Content provider是一种为其它应用程序提供数据的组件。这些数据可以保存在文件中,也可以保存在SQLite数据库中,还
可以以其他任何有效的方式保存。ContentProvider类为我们提供了一系列保存数据的方法供我们调用,可以很方便地存储数据。其它应用程序在需要
使用这些数据时,可以用ContentResolver对象,使用其中的方法。ContentResolver可以与任何contentprovider交互,获取其中的数据。 只需要
某个组件,Android就会尽力保证它的可用;如果该组件还没有启动,就启动它,如果该组件所属的应用程序还没拥有一个进程,则为它启动一个进程
,如果系统资源不足以容纳一个新的进程,则将后台的某个进程杀死为新进程腾出资源。