作者:张骞在这里 | 来源:互联网 | 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. 创建按钮 android:id="@+id/button_start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="启动新 Activity" />
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. 创建按钮 android:id="@+id/button_exit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="退出 Activity" />
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: