Android Activity的生命周期与加载模式超详细图文解析

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技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • Springboot Mybatis-Plus数据库单元测试实战(三种方式)

    以下是Spring Boot Mybatis-Plus数据库单元测试实战的完整攻略,包含三种方式,并提供两个示例说明: 方式一:使用内存数据库H2进行单元测试 添加H2依赖 <dependency> <groupId>com.h2database</groupId> <artifactId>h2</art…

    other 2023年10月17日
    00
  • 教你加密Root文件系统(图)

    该攻略的标题是“教你加密Root文件系统(图)”。 步骤一:安装cryptsetup 首先,在开始加密Root文件系统之前,我们需要安装“cryptsetup”工具。在大多数Linux操作系统中,“cryptsetup”都是预装的,但如果您的系统中没有安装它,则可以通过以下命令使用软件包管理器进行安装: sudo apt-get install crypts…

    other 2023年6月27日
    00
  • 网络编程socket之tcp之connect具体解释

    以下是“网络编程socket之tcp之connect具体解释”的完整攻略: TCP连接 TCP(传输控制协议)是一种面向连接的协议,它提供了可靠的、有序的、基于字节流的数据传输服务。在TCP连接中,客户端和服务器之间需要建立一个连接,然后才能进行数据传输。 connect()方法 在Java中,可以使用Socket类来创建TCP连接。Socket类提供了一个…

    other 2023年5月7日
    00
  • mqttbox安装使用测试apollo服务器(ubuntu16.04)

    MQTTBox安装使用测试Apollo服务器(Ubuntu 16.04)攻略 MQTTBox是一款流行的MQTT客户端工具,它可以帮助我们测试和试MQTT服务器。攻略将介绍如何在Ubuntu 16.04上安装和使用MQTTBox,并使用MQTTBox测试Apollo服务器。 骤一:安装MQBox 在Ubuntu 16.04上安装MQTTBox非常简单。我们可…

    other 2023年5月9日
    00
  • Python基础详解之描述符

    Python基础详解之描述符 基本概念 描述符是将某种特殊类型的类的实例分配给另一个类的属性。这个特殊类型的类需要实现__get__、set、__delete__这三个方法中的至少一个。当属性被访问时(读、写或删除),相应的描述符方法就会被调用。 描述符的分类 Python中描述符可以分为数据描述符和非数据描述符两种类型: 数据描述符:同时实现了__get_…

    other 2023年6月27日
    00
  • Java 精炼解读数据结构的链表的概念与实现

    Java 精炼解读数据结构的链表的概念与实现 什么是链表 链表是一种数据结构,它的特点是存储的元素是不连续的。链表中每个元素都由一个存储该元素的节点和一个指向下一个元素的指针组成。链表可以分为单向链表和双向链表两种。 实现链表 在 Java 中实现链表需要定义一个链表的节点类。该节点类必须包含数据域和指向下一个节点的指针域。 public class Lis…

    other 2023年6月27日
    00
  • 怎么处理windows登录弹出不能加载本地存储文件?

    如果在Windows登录过程中出现“不能加载本地存储文件”的弹出窗口,这可能是由于本地存储文件已经损坏或被删除所致。解决此问题,有以下步骤: 1. 检查磁盘错误和修复文件系统 首先,我们需要检查和修复磁盘错误。可以使用Windows自带的磁盘检查工具,具体步骤如下: 打开文件资源管理器,右键单击需要检查的驱动器,选择“属性”。 在“工具”选项卡下,单击“检查…

    other 2023年6月25日
    00
  • 手把手带你理解java线程池之工作队列workQueue

    标题:手把手带你理解Java线程池之工作队列WorkQueue 1. 什么是工作队列(WorkQueue) 在Java线程池中,工作队列(WorkQueue)用于存储还未被执行的任务,当线程池接收到新的任务时,它会将该任务添加到工作队列中。线程池中的线程会不断从工作队列中取出任务并执行。当工作队列中没有可执行的任务时,线程池中的线程也会进入等待状态。 Jav…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部