什么是 Activity?它是如何工作的?

Activity 是 Android App 的基本组件之一,通常代表一个带有用户界面的单独屏幕,例如登录屏幕、消息列表或设置页面。每个 Activity 都是一个继承自 Activity 的类,最常见的是继承自 AppCompatActivity 或 ComponentActivity,并且必须在 App 的 AndroidManifest.xml 中注册。当用户从主屏幕打开 App 时,系统会启动被指定为 App 入口点的 Activity,App 可以从这里借助 Intent 打开其他 Activity。

Activity 拥有由 Android 系统控制的生命周期。通过 onCreate()、onStart()、onResume()、onPause()、onStop() 和 onDestroy() 等方法,App 会在屏幕被创建、变为可见、失去焦点或被关闭时收到通知,以便在合适的时机释放资源并保存数据。许多现代 App 只使用一个或少数几个 Activity,并使用 Fragment 或 Jetpack Compose 构建各个屏幕,但 Activity 仍然是将 App 的用户界面与系统连接起来的元素。

App 开发中的 Activity 是指 Android 应用程序中的单个屏幕,它充当面向用户的交互式窗口。每个 Activity 负责处理用户交互并呈现数据,让开发者能够打造动态且引人入胜的用户体验。Activity 之间可以通过相互传递数据来协同工作,从而确保 App 中的导航和功能衔接顺畅。

More about Activity

Activity 是 Android 应用程序开发中的一个核心组件,代表一个带有用户界面的单独屏幕。每个 Activity 都是一个独立的单元,负责处理用户交互并呈现数据,让开发者能够打造动态且引人入胜的用户体验。Activity 是 Android App 的基本构建块,它们充当入口点,用户通过它们与 App 的功能进行交互。

从技术上讲,Activity 是 Android SDK 中 Activity 类的子类,它通过处理生命周期方法来工作,这些方法控制着 Activity 的创建、启动、停止和销毁方式。Activity 启动后,会经历一系列生命周期阶段,让开发者能够高效地管理资源并响应用户交互。其中包括 onCreate()、onStart()、onResume()、onPause()、onStop() 和 onDestroy() 等方法,每种方法都在确保流畅且响应迅速的用户体验方面发挥着作用。

Activity 可以通过不同的方式呈现,每种方式支持不同类型的交互:

  1. 全屏:这时,Activity 充当一个负责处理用户交互并呈现数据的独立屏幕。这是最常见的形式,用户可以在 App 的不同屏幕之间导航。

  2. 作为对话框:使用对话框主题时,Activity 会以浮动在当前屏幕上方的对话框形式呈现。这种方式有时用于显示重要消息或请求用户输入,而无需离开当前的情境,不过对话框更常使用 DialogFragment 或 Compose 来实现。

  3. 沉浸模式:Activity 会完全控制屏幕,并隐藏状态栏和导航栏等系统栏,以提供沉浸式体验。这非常适合游戏或媒体播放,因为在这些场景中,专注于内容至关重要。

Activity 最大的优势之一,是它能够处理复杂的用户交互和导航模式。Android 的 Activity 模型支持多种导航模式,例如返回栈,它让用户能够返回之前的屏幕,从而打造直观且可预测的用户体验。此外,Activity 之间可以借助 Intent 共享数据并相互通信,从而实现 App 不同部分之间的无缝集成。

Activity 在设计上也注重资源效率。Android 的生命周期方法让开发者能够在 Activity 不可见时释放不必要的资源,并在其返回前台时重新加载这些资源,从而优化资源消耗。这有助于确保 App 即使在资源有限的设备上也能保持响应和高效。

在实践中,Activity 塑造了 Android App 的设计和开发方式。它们为处理用户交互和导航模式提供了一种结构化的方法,让开发者能够打造丰富且引人入胜的用户体验。Activity 是许多热门 App 的核心,被用于组织内容、处理用户输入以及在不同功能之间导航。

总之,Activity 是 Android 开发的重要组成部分,它将灵活性、效率和易用性结合在一个解决方案中,让开发者能够打造功能强大且直观的 App。它能够处理复杂的生命周期和导航模式,因此在用户体验和高效的资源管理至关重要的现代 App 开发中,它是一项核心工具。

Frequently asked questions about Activity

Android 中的 Activity 是什么?

Activity 是 Android App 的基本构建块之一。它通常代表一个带有用户界面的单独屏幕,例如登录屏幕、消息列表或设置页面。用户通过 App 的 Activity 与 App 进行交互。

每个 Activity 都是一个继承自 Activity 的类,更常见的是继承自 AppCompatActivity 或 ComponentActivity,并且必须在 AndroidManifest.xml 文件中声明。其中一个 Activity 会被标记为入口点,以便系统知道用户轻点 App 图标时应打开什么。现代 App 通常只有少数几个 Activity,并使用 Fragment 或 Jetpack Compose 来显示不同的屏幕。

Activity 的生命周期是如何运作的?

Activity 从创建的那一刻起直到被关闭,会经历一系列状态。当状态发生变化时,Android 会调用特定的方法。onCreate 会在 Activity 创建时被调用,用户界面就是在这里设置的。onStart 和 onResume 会在 Activity 变为可见并可供使用时被调用。

当用户切换到另一个 App 或屏幕时,会调用 onPause 和 onStop,而当 Activity 被完全关闭时,则会调用 onDestroy。通过将代码放在合适的方法中,App 可以在视频不可见时停止播放,并在关闭前保存数据。处理不当可能会导致错误并浪费资源。

App 如何在 Activity 之间切换?

App 借助 Intent 从一个 Activity 切换到另一个 Activity。Intent 描述了应打开哪个 Activity,并且可以包含数据,例如新屏幕应显示的商品的 ID。Intent 通过 startActivity 方法发送。

新的 Activity 会被放在一个称为返回栈的栈的顶部。当用户按下返回时,顶部的 Activity 会被关闭,之前的 Activity 会重新显示。如果新屏幕需要返回结果,例如所选的图片,则会使用 Activity Result API。不过,许多现代 App 只使用一个 Activity,并借助 Navigation 组件在其中的各个屏幕之间切换。

旋转屏幕时 Activity 会发生什么?

当用户旋转手机时,配置会发生变化,默认情况下,Android 会销毁当前的 Activity 并重新创建它。这样可以加载适合新屏幕方向的不同布局,但这也意味着仅保存在 Activity 中的数据可能会丢失。

为了避免这种情况,通常会使用 ViewModel,它可以在配置变更后继续存在,并保留已加载的列表等数据。少量的状态,例如字段中的文本或滚动位置,可以使用 onSaveInstanceState 或 Jetpack Compose 中的 rememberSaveable 来保存。当语言、主题或屏幕尺寸发生变化时,情况也是如此。

Activity 和 Fragment 有什么区别?

Activity 是一个系统已知的独立组件,在 AndroidManifest.xml 中声明。它充当 App 用户界面的容器,可以直接启动,例如从通知或其他 App 启动。

Fragment 是用户界面中一个较小的可复用部分,它始终存在于某个 Activity 内部。同一个 Activity 中可以显示多个 Fragment,例如在平板电脑上并排显示列表和详情视图。Fragment 有自己的生命周期,它与托管它们的 Activity 相关联。许多 App 使用少数几个 Activity 以及许多 Fragment 或 Compose 屏幕。

Activity 的启动模式有哪些?

启动模式决定了新 Activity 在启动时相对于现有 Activity 的放置方式。默认情况下,每次都会创建一个新实例,即使同一个 Activity 已经打开也是如此。

使用 singleTop 时,如果 Activity 已经位于栈顶,就会复用它,而不是创建新的实例。使用 singleTask 时,只存在一个实例,当它再次被打开时,位于它上方的 Activity 会被移除。singleInstance 会将 Activity 放在其自己的任务中,而自 Android 12 起,singleInstancePerTask 允许每个任务有一个实例。启动模式在 AndroidManifest.xml 中指定,或者通过 Intent 上的标志来指定,例如用于在从通知打开 App 时避免出现重复的屏幕。

Activity for dummies

App 中的 Activity 就像手机上的一个单独屏幕。可以把它想象成书中的一页。打开 App 时,会出现一个可以做某件特定事情的屏幕,例如阅读新闻、发送消息或查看照片。每一个这样的屏幕都是一个“Activity”。从阅读新闻切换到发送消息,就意味着从一个 Activity 切换到另一个 Activity。这是 App 组织不同功能和信息的方式,让它们易于浏览和使用。

发表评论