Android Activity是Android应用程序中最基本的组件之一。本文将针对Android Activity的生命周期和加载模式进行详细的图文讲解,帮助开发者更好地理解和掌握这一知识点。
一、Android Activity的生命周期
Android Activity的生命周期共分为七个状态,每个状态都有其对应的回调方法。下面分别介绍这七个状态及其对应的回调方法。
1. onCreate()
该方法在Activity第一次被创建时调用,一般在该方法中进行初始化操作,如界面布局、数据初始化等。例如:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 进行其他初始化操作
}
2. onStart()
该方法在Activity即将变为可见状态时调用。例如:
@Override
protected void onStart() {
super.onStart();
// Activity即将变为可见状态
}
3. onResume()
该方法在Activity进入前台并获取焦点时调用,一般在该方法中进行重新启动或重新连接需要的操作。例如:
@Override
protected void onResume() {
super.onResume();
// Activity已获取焦点
}
4. onPause()
该方法在Activity失去焦点并进入后台时调用,一般在该方法中进行资源释放、保存数据等操作。例如:
@Override
protected void onPause() {
super.onPause();
// Activity已失去焦点
}
5. onStop()
该方法在Activity完全被遮挡时调用,可以在该方法中进行一些轻量级资源释放工作,比如推迟网络连接、重启传感器等操作。例如:
@Override
protected void onStop() {
super.onStop();
// Activity已被遮挡
}
6. onDestroy()
该方法在Activity被销毁前调用,可以在该方法中进行资源释放、反注册等操作。例如:
@Override
protected void onDestroy() {
super.onDestroy();
// 释放资源
}
7. onRestart()
该方法在Activity重新回到前台时调用,一般在该方法中进行一些初始化工作。例如:
@Override
protected void onRestart() {
super.onRestart();
// Activity重新回到前台
}
二、Android Activity的加载模式
在Android应用程序中,Activity的启动模式对于应用程序的整体架构和用户体验有着重要的影响。在这里,我们将介绍四种常见的Activity启动模式及其特点。
1. Standard模式
Standard是Android系统默认的Activity启动模式,在该模式下,每次启动Activity都会创建新的实例,并且该实例是独立的。注意,如果当前Activity已经在返回栈中存在,并且该Activity位于栈顶,则不会再创建新的Activity实例,而是直接显示该Activity。例如:
<activity
android:name=".MainActivity"
android:launchMode="standard" />
2. SingleTop模式
SingleTop模式是一种非常常见的Activity启动模式,在该模式下,如果当前Activity已经在返回栈中存在,则不会再创建新的Activity实例,而是直接调用该Activity的onNewIntent()方法。例如:
<activity
android:name=".MainActivity"
android:launchMode="singleTop" />
3. SingleTask模式
SingleTask模式是一种极少使用的Activity启动模式,在该模式下,每次启动Activity都会检查返回栈中是否已经存在该Activity实例。如果存在,则该Activity会被复用,并且调用该Activity的onNewIntent()方法。如果不存在,则创建新的Activity实例。例如:
<activity
android:name=".MainActivity"
android:launchMode="singleTask" />
4. SingleInstance模式
SingleInstance模式是一种极少使用的Activity启动模式,在该模式下,Activity的启动会完全独立于应用程序的其它部分。例如:
<activity
android:name=".MainActivity"
android:launchMode="singleInstance" />
示例说明
示例一:SingleTop模式
假设我们有三个Activity,分别为A、B、C,它们的启动模式分别为SingleTop、Standard、SingleTask。现在,我们在Activity A中启动Activity B,并且在Activity B中启动Activity C。然后,我们在Activity C中重新启动Activity B,然后再从Activity B中返回到Activity A。下面是启动两次Activity B的过程:
- Activity A启动Activity B
该过程是一个标准的SingleTop模式启动Activity B的过程,Activity A->Activity B
- Activity B启动Activity C
该过程是一个标准的Standard模式启动Activity C的过程,Activity A->Activity B->Activity C
- Activity C重新启动Activity B
由于Activity B的启动模式为SingleTop,Activity C会检查返回栈中是否存在Activity B的实例,发现存在,则直接调用Activity B的onNewIntent()方法。Activity A->Activity B
- 从Activity B返回到Activity A
该过程是一个标准的SingleTop模式返回Activity A的过程,Activity A->Activity B->Activity A
示例二:SingleTask模式
假设我们有两个Activity,分别为A、B,它们的启动模式分别为SingleTask、Standard。现在,我们在Activity A中启动Activity B,并且在Activity B中启动Activity A。下面是启动两次Activity A的过程:
- Activity A启动Activity B
该过程是一个标准的SingleTask模式启动Activity B的过程,Activity A->Activity B
- Activity B启动Activity A
由于Activity A的启动模式为SingleTask,Activity B会检查返回栈中是否存在Activity A的实例,发现不存在,则创建新的实例。Activity A->Activity B->Activity A
- 从Activity A返回到桌面
在返回栈中只有一个Activity时,按返回键将直接退出应用程序。
至此,我们对Android Activity的生命周期和加载模式有了更为深入的了解。在日常开发中,有必要熟悉这些知识点,以便更好地设计应用程序的架构和实现应用程序的各种功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android Activity的生命周期与加载模式超详细图文解析 - Python技术站