在Android应用开发中,Activity
是一个非常重要的概念,它代表了应用中的一个单一的、交互式的屏幕。每个Activity
都关联有一个用户界面(通常是通过XML布局文件定义的),并且可以响应用户的操作,如点击、滑动等。
Activity 的工作原理:
-
启动:当用户通过点击应用图标、响应
Intent
或系统生成的事件时,一个新的Activity
被启动。 -
生命周期回调:Android 系统在
Activity
的生命周期的各个阶段调用相应的回调方法。 -
用户交互:
Activity
可以包含View
组件,用户可以通过这些组件与应用进行交互。 -
任务管理:Android 系统将
Activity
组织成任务,每个任务有一个栈,栈中包含了用户返回的路径。 -
状态管理:
Activity
需要正确管理其状态,包括在配置更改(如屏幕旋转)和内存不足时保存和恢复状态。
Activity 的生命周期:
Activity
的生命周期由一系列回调方法定义,这些方法在 Activity
状态改变时由系统调用:
-
onCreate():
- 每当
Activity
被创建时调用。 - 用于初始化
Activity
,如加载布局和恢复状态。
- 每当
-
onStart():
- 当
Activity
变得可见时调用。 Activity
已经或即将开始执行交互。
- 当
-
onResume():
- 当
Activity
准备与用户交互时调用。 Activity
处于活动状态,是用户与之交互的顶层Activity
。
- 当
-
onPause():
- 当
Activity
部分失去焦点,但尚未停止时调用。 - 用于保存状态和停止动画,可能即将被停止或另一个
Activity
即将被启动。
- 当
-
onStop():
- 当
Activity
不再可见时调用。 Activity
被覆盖或停止,应该尽快执行工作,因为系统可能会随时将其销毁。
- 当
-
onDestroy():
- 当
Activity
即将被销毁时调用。 - 用于清理资源,如结束线程、释放对象等。
- 当
-
onRestart():
- 当
Activity
被停止后再次启动时调用。 - 通常在
onStop()``onStart()``onResume()``onPause()``onStop()``onDestroy()``onCreate()``onStart()``onResume()
之后发生。
- 当
生命周期的图形表示:
[Activity Created] [Activity Running]
| |
| |
v v
oncreate() onRestoreInstanceState()
| |
| <----- Activity may be stopped -----|
| |
| <----- Activity may be started -----|
v v
onstart() onRestart()
| |
| <--------- Activity is active ------|
| |
| |
v v
onresume() onresume() (if coming from pause)
| |
| 1. Another Activity starts/comes to front
2. Activity pauses
|---- Activity is still running in the background ----|
| |
| |
v v
onPause() onPause() (if going to background)
| |
| 1. Home button pressed
2. App switches to another app manually
|---- Activity is completely stopped and may be killed by the system ----|
| |
| |
v v
onStop() onStop()
| |
| Activity may be destroyed and recreated at any time
| |
| |
v v
onDestroy() onDestroy()
生命周期的最佳实践:
-
初始化:在
onCreate()
中进行一次性的初始化,如设置布局和恢复状态。 -
状态保存:在
onPause()
和onStop()
中保存状态,以便在onResume()
和onStart()
中恢复。 -
资源管理:在
onPause()
中停止或暂停昂贵的操作,在onResume()
中恢复它们。 -
清理资源:在
onDestroy()
中释放资源,如结束线程、释放数据库连接等。 -
配置更改:处理配置更改(如屏幕旋转)时,考虑使用
android:configChanges
属性或保存和恢复状态。
理解 Activity
的生命周期对于开发健壮、响应式和资源高效的 Android 应用至关重要。正确管理生命周期可以避免内存泄漏、提高性能,并确保用户界面的一致性。
创建 Activity:
创建Activity
通常涉及以下几个步骤:
-
定义一个类:创建一个继承自
Activity
的类。 -
注册到清单:在应用的
AndroidManifest.xml
文件中注册这个Activity
。 -
定义布局:创建一个XML布局文件,定义
Activity
的用户界面。 -
关联布局和Activity:在
Activity
的onCreate
方法中,通过setContentView()
关联XML布局。 -
设置事件监听器:为
View
对象设置监听器,以响应用户事件。
示例代码:
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_activity_layout);
// 获取布局中的TextView,并设置文本
TextView textView = findViewById(R.id.text_view);
textView.setText("Hello, World!");
}
}
在这个例子中,MyActivity
是一个继承自Activity
的类,它加载了一个名为my_activity_layout
的XML布局,并在其中找到了一个TextView
控件,然后设置了它的文本。
注意事项:
-
管理状态:正确管理
Activity
的状态对于提供流畅的用户体验至关重要。 -
资源清理:在
Activity
销毁前,确保释放所有占用的资源,如结束线程、关闭数据库连接等。 -
配置更改:
Activity
可能会经历配置更改(如屏幕旋转),需要正确处理这些情况以保持应用的稳定性。 -
Intent:
Activity
之间通常通过Intent
进行通信,传递数据和请求操作。
Activity
是Android应用的基本构建块之一,理解其工作原理和生命周期对于开发高质量的Android应用非常重要。