作者:张骞在这里 | 来源:互联网 | 2024-12-13 10:46
本文介绍了Android开发中Activity的基本概念、生命周期、状态转换以及如何创建和管理Activity。通过详细的解释和示例代码,帮助开发者更好地理解和使用Activity。
一、Activity 基本概念
Activity 是 Android 应用程序的基本构建块之一,用于提供用户界面并与用户进行交互。每个 Activity 都是一个独立的屏幕,可以包含各种 UI 元素。
二、Activity 的状态
1. 运行状态
当 Activity 处于栈顶时,它处于运行状态,此时系统最不可能回收该 Activity。
2. 暂停状态
当 Activity 不在栈顶但仍部分可见时,它进入暂停状态。例如,当一个新的透明 Activity 被启动时,原来的 Activity 就会进入暂停状态。
3. 停止状态
当 Activity 完全不可见时,它进入停止状态。此时,系统可能会选择回收该 Activity 以释放资源。
4. 销毁状态
当 Activity 被从栈中移除时,它进入销毁状态。这是系统最可能回收的 Activity 状态,以确保内存充足。
三、Activity 生命周期
Activity 的生命周期由多个回调方法组成,这些方法在 Activity 的不同状态之间转换时被调用。
1. 生命周期方法
1.1 onCreate()
当 Activity 第一次创建时调用,通常用于初始化 Activity,如设置布局文件和绑定成员变量。
1.2 onStart()
当 Activity 从不可见到可见时调用,通常用于执行一些初始化操作。
1.3 onResume()
当 Activity 准备与用户交互时调用,此时 Activity 处于栈顶且处于运行状态。在这个方法中可以执行一些轻量级的操作以提高用户体验。
1.4 onPause()
当 Activity 准备去启动或恢复另一个 Activity 时调用。在这个方法中应保存一些关键状态,以防系统因内存不足而销毁 Activity。
1.5 onStop()
当 Activity 完全不可见时调用。可以在这个方法中执行一些耗时的操作,如写入数据库。
1.6 onDestroy()
当 Activity 被销毁前调用,通常用于释放资源。
1.7 onRestart()
当 Activity 从停止状态重新变为可见时调用。可以在这个方法中恢复 Activity 的状态。
四、Activity 栈管理
Android 使用任务栈来管理 Activity。每个应用启动时都会创建一个任务栈,新的 Activity 实例会被压入栈中。栈顶的 Activity 总是可见且可交互的。
五、创建和管理 Activity
1. 创建 Activity
a. 创建新类
在项目中创建一个新的 Java 类,并继承自 android.app.Activity
。
b. 复写 onCreate() 方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
c. 创建布局文件
在 res/layout
目录下创建一个新的布局文件。
d. 设置布局
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
e. 在 AndroidManifest.xml 中注册 Activity
2. 启动 Activity
a. 创建按钮
b. 添加点击事件
Button buttOnStart= findViewById(R.id.button_start);
buttonStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, NewActivity.class);
startActivity(intent);
}
});
3. 关闭 Activity
a. 创建按钮
b. 添加点击事件
Button buttOnExit= findViewById(R.id.button_exit);
buttonExit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
六、Activity 启动模式
Activity 的启动模式包括 standard、singleTop、singleTask 和 singleInstance。每种模式决定了 Activity 如何被创建和添加到任务栈中。
七、Intent 的使用
1. 显式 Intent
显式 Intent 用于直接启动已知的 Activity。
Intent intent = new Intent(this, TargetActivity.class);
startActivity(intent);
2. 隐式 Intent
隐式 Intent 通过 action 和 category 来匹配目标 Activity。
Intent intent = new Intent();
intent.setAction("com.example.ACTION_NAME");
startActivity(intent);
在 AndroidManifest.xml
中声明 Intent Filter: