Activity活动概述
官方说法:一个 Activity 是应用程序组件,提供一块屏幕让用户完成任务——拨号、拍照、发邮件、看地图。每个 Activity 分到一个窗口来画界面;窗口通常铺满屏幕,也可以更小、浮在别的窗口上。
一、多个 Activity 与返回栈
一个应用通常由多个松耦合的 Activity 组成。其中会指定一个 main Activity,第一次启动时呈现给用户。之后每个 Activity 都可以再启动另一个,去完成不同动作。
每次启动新 Activity,前一个就停止,但系统把它留在栈上(back stack)。新 Activity 入栈顶、拿到焦点。栈是后进先出:用户点 Back,当前 Activity 出栈并销毁,前一个恢复。
因新 Activity 启动而停止时,系统通过生命周期回调通知状态变化——创建、停止、恢复、销毁各有对应方法。例如停止时应释放大对象(网络、数据库连接);恢复时再拿回资源、接上被打断的动作。这些转换就是 Activity 生命周期的一部分。
二、四大组件里的控制器,不是「只负责显示」
Activity 是 Android 四大组件之一,确实可以显示 View,也几乎都和用户交互。但不能因此说它「主要就是用来显示 View」——显示只是它能做的事之一。
对照 MVC 更清楚。JavaEE 里分层很干净;Android 里可以这样对应:
-
M(Model):业务主体。数据库、网络等放这一层(不必塞进同一个包,但统称 Model)。 -
V(View):生成用户界面、接收输入、展示结果。Android 里通常用 XML 描述界面,需要时再 inflate;也可以用 JavaScript + HTML 等当 View。 -
C(Controller):控制层主要落在众多 Activity 肩上。不要在 Activity 里堆太多代码,尽量把业务交给 Model。
所以 Activity 更像控制器:选要显示哪块 View,从 View 取数据交给 Model,再把处理结果展示回去。
| 层面 | 在 Android 里谁来当 | 不该塞什么 |
|---|---|---|
| Model | 业务、网络、数据库 | 不要和 Activity 绑死在同一堆方法里 |
| View | 布局 XML / 界面树 | 不要在 XML 里写业务逻辑 |
| Controller | Activity | 不要写成「巨型 God Activity」 |
一句话总结:Activity 是带窗口的交互组件,靠返回栈切换;在 MVC 里它是控制器,负责选 View、传数据,而不是把全部业务写在界面类里。
转载请注明来源:Activity活动概述







