Activity活动概述

    |     2015年4月21日   |   Activity活动   |     0 条评论   |    1593

官方说法:一个 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活动概述
本文链接地址:https://ai.zhousir.top/?p=532
回复 取消