Activity
外观
Activity[编辑 | 编辑源代码]
Activity 是 Android (Java) 应用程序中的核心组件之一,作为用户界面的容器,负责管理用户与应用程序之间的交互。每个 Activity 代表一个单独的屏幕,通常包含一个用户界面(UI),用户可以通过该界面执行操作。
概述[编辑 | 编辑源代码]
在 Android 中,Activity 是 Context 的子类,用于展示 UI 并处理用户输入。一个应用程序通常由多个 Activity 组成,它们通过 Intent 进行通信和切换。Activity 的生命周期由系统管理,开发者需要了解其生命周期方法以确保应用程序的正确行为。
生命周期[编辑 | 编辑源代码]
Activity 的生命周期包括以下几个关键方法:
- onCreate() - 当 Activity 首次创建时调用,用于初始化 UI 和数据。
- onStart() - 当 Activity 变为可见时调用。
- onResume() - 当 Activity 开始与用户交互时调用。
- onPause() - 当 Activity 失去焦点但仍部分可见时调用。
- onStop() - 当 Activity 不再可见时调用。
- onDestroy() - 当 Activity 被销毁时调用。
以下是一个生命周期示意图:
基本用法[编辑 | 编辑源代码]
以下是一个简单的 Activity 示例,展示如何在 Android 中创建一个基本的 Activity:
// MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // 加载布局文件
// 初始化 UI 组件
Button button = findViewById(R.id.button);
button.setOnClickListener(v -> {
// 点击按钮后跳转到另一个 Activity
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
});
}
}
布局文件[编辑 | 编辑源代码]
对应的布局文件 `activity_main.xml` 可能如下:
<!-- res/layout/activity_main.xml -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="跳转到 SecondActivity" />
</LinearLayout>
与其他组件的关系[编辑 | 编辑源代码]
- 与 Fragment 的关系:Activity 可以包含多个 Fragment,用于实现模块化的 UI。
- 与 Intent 的关系:通过 Intent 启动其他 Activity 或传递数据。
- 与 ContentProvider 的关系:Activity 可以通过 ContentProvider 访问共享数据。
实际应用场景[编辑 | 编辑源代码]
1. 登录界面:一个 Activity 负责处理用户登录逻辑。 2. 主界面:显示应用程序的主要功能入口。 3. 设置界面:允许用户配置应用程序选项。
高级主题[编辑 | 编辑源代码]
任务和返回栈[编辑 | 编辑源代码]
Android 使用任务(Task)和返回栈(Back Stack)管理 Activity 的导航。每个任务是一个 Activity 的集合,用户可以通过返回按钮导航回之前的 Activity。
启动模式[编辑 | 编辑源代码]
Activity 的启动模式(Launch Mode)决定了如何创建和复用 Activity 实例,包括:
- `standard`(默认)
- `singleTop`
- `singleTask`
- `singleInstance`