选定的联系人,其它的活动用于查看旧的消息或者显示设置的界面。虽然它们作为一
个整体的用户界面进行协同工作,但是每一个活动都是相对独立的。每一个活动都是
活动基类(类 Activity)的一个子类实现。
一个 Android 应用可能由一个活动组成,或者像上面提到的文本信息应用程序一样包
含了多个活动。活动是什么样的以及需要多少的活动,这些取决于你的应用程序是如
何设计的。最典型的是将一个活动被标记为第一个,当应用被加载时显示给用户。从
一个活动转到另一个活动是通过在当前活动来运行下一个活动实现的。
每个活动提供了一个用于绘制的默认窗口。通常窗口将占满整个屏幕,但是也有可能
比屏幕小并且浮在另一个窗口的上面。一个活动可以使用多个窗口——例如,在活动
中央显示一个需要用户回应的弹出对话框,或者当用户选择屏幕上一个特定项目时为
用户显示一些重要信息的窗口。
窗口中的可见的内容是由一组继承自 View 基类的 view 组成的层次体系。每个 view 控
制窗口中一块特定的矩形区域,父 view 包含并组织子 view 的布局。叶 view(层次底
端的 view)绘制它们管理的矩形,并且负责响应用户在此区域的操作,因此 view 就是
活动和用户交互的地方。例如,一个 view 显示一个小图片,当用户点击这个图片后开
始一个操作。Android 有很多已经做好的 view 你可以选择使用,包括按钮,文本输入
框,滚动条,菜单项,多选列表等等。
通过使用 Activity.setContentView()方法将一组 view 层放置到一个活动窗口中,content
view 是 view 层中最顶端的那个 view。(参见 User Interface 的文档获取更多有关 view
和层次的信息。)
服务(Services)
服务没有可见的用户界面,但是可以在后台运行任意长的时间。例如,一个服务可以在
用户转向其他工作后仍然在后台播放音乐,或者从网上下载数据,或者计算一些东西然
后在需要的时候提供给活动。每个服务都继承自 Service 基类。
一个主要的例子就是从列表中播放音乐的媒体播放器。播放器程序可能会有一个或几个
活动,这些活动可以让用户选择希望播放的音乐然后显示播放。但是音乐播放过程本身
不会使用一个活动,因为用户希望在切出播放器界面做别的事情时音乐也能一直放下去。
为了保持播放继续,播放器的活动可以启动一个在后台运行的服务。然后即使启动这个
服务的活动退出,音乐播放服务也能继续运行。
你可以连接(connect)或者绑定(bind)到一个正在运行的服务(如果这个服务还没运行
的话就启动它)。当连接到服务后,你可以通过服务暴露出来的接口和这个服务进行通信,
对音乐播放服务来说,这个接口可能允许用户暂停,后退,停止,重新播放等操作。
像活动和其他组件一样,服务运行在这个应用程序进程的主线程中。因此为了不阻塞其他
的组件或者用户界面,服务经常为那些耗时长的任务单独开一个线程(比如音乐播放)。
广播接收器(Broadcast receivers)