Android入门教程之组件Activity的生命周期详解

yizhihongxing

下面是对“Android入门教程之组件Activity的生命周期详解”教程的完整攻略:

一、什么是组件Activity?

  • 组件Activity是Android应用程序的组成部分,是用户与应用程序进行交互的窗口。

二、Activity的生命周期

从整个流程来看,Activity的生命周期可以分为四种状态:运行状态、暂停状态、停止状态、销毁状态。这四种状态对应着Activity的完整生命周期。

1. 运行状态 - Running

当一个Activity被启动后,它进入了运行状态。这个状态下,Activity处于前台,占有着用户焦点。

处于这个状态的Activity,可以执行如下任务:

  • 跟用户互动(如展现UI,接收点击事件等)。
  • 处理系统发来的消息(如屏幕旋转,按键事件等)。

2. 暂停状态 - Paused

当用户离开一个Activity时,它会进入暂停状态。此时Activity仍然可见,但不再是用户当前的活动页面。

处于这个状态下的Activity,可以执行如下任务:

  • 暂停UI和动画效果。
  • 停止所有的后台操作。
  • 维护和更新UI状态和数据。

3. 停止状态 - Stopped

当一个Activity完全不可见的时候,它进入了停止状态。这个状态下,Activity可能被后台其他进程终止,需要释放与Activity相关联的资源。

处于这个状态下的Activity,可以执行如下任务:

  • 释放所有的资源。
  • 停止所有的后台操作。

4. 销毁状态 - Destroyed

当系统销毁了一个Activity时,它进入了销毁状态。此时Activity的所有资源都被释放掉了,并且在之后将无法重用。

处于这个状态下的Activity,需要执行如下任务:

  • 释放所有内存资源。
  • 关闭所有的视图和资源。
  • 参与Activity是否重建的决策。

三、生命周期回调方法

Activity生命周期中,系统会回调一些生命周期回调方法,开发者可以在这些回调方法中编写自己的逻辑。

总的来说,Activity生命周期回调方法可以分为三类:

1. 创建和销毁相关方法

在Activity的开启或销毁时,系统会回调如下方法:

  • onCreate:在Activity第一次被创建时回调。此时适合完成一些初始化操作。
  • onDestroy:在Activity被销毁时调用。

2. 可见和前后台切换相关方法

当Activity由不可见状态变成可见状态,或反之,系统会回调如下方法:

  • onStart:在Activity变成可见时回调。
  • onStop:当Activity变成不可见时回调。

3. 暂停和恢复相关方法

当Activity暂停和恢复时,系统会回调如下方法:

  • onPause:当Activity失去焦点或进入不可见状态时回调。
  • onResume:当Activity获得焦点时回调。

以上就是Activity生命周期的详解,下面通过两个示例来进一步说明Activity的生命周期。

示例一

下面的代码可以查看在Activity的生命周期中,不同状态下所调用方法的顺序:

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "Activity-LifeCycle";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG, "onCreate()");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG, "onStart()");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG, "onResume()");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG, "onPause()");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG, "onStop()");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy()");
    }
}

在上面的代码中,当Activity创建时,onCreate方法被调用。当Activity变成可见时,onStart和onResume方法被调用。当Activity失去焦点时,onPause方法被调用。当Activity变成不可见时,onStop方法被调用。最后,当Activity被销毁时,onDestroy方法被调用。

示例二

下面的代码演示了如何通过按下返回键来销毁一个Activity:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            this.finish(); // 销毁当前Activity
            return true; // 消耗返回键
        }

        return super.onKeyDown(keyCode, event);
    }
}

在上面的代码中,我们在Activity中重载了onKeyDown方法,监听了按下返回键的事件,然后调用了该Activity的finish方法来销毁该Activity。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android入门教程之组件Activity的生命周期详解 - Python技术站

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

相关文章

  • rancher2—了解什么是rancher以及简单部署

    rancher2—了解什么是rancher以及简单部署 什么是rancher rancher 是一个开源的管理、部署和维护容器化应用的平台。使用 rancher 可以方便地管理多个集群或多个云端平台,支持多种容器引擎,如 Docker、Kubernetes 等,并集成了更多的组件,比如 Helm、Prometheus、Istio 等,为用户提供了更全面的…

    其他 2023年3月29日
    00
  • php上传apk后自动提取apk包信息的使用(示例下载)

    详细讲解“php上传apk后自动提取apk包信息的使用(示例下载)” 在PHP中,我们可以通过一些库和工具来实现上传APK文件并自动提取APK包信息的功能。下面是一个完整的攻略,包含两个示例说明。 示例1:上传APK文件 首先,我们需要创建一个HTML表单,用于上传APK文件。在表单中,我们使用<input type=\”file\”>元素来实现…

    other 2023年10月13日
    00
  • 关于tp90tp99等常用于评估软件系统的处理性能的指标概念

    当然,我可以为您提供有关“关于tp90、tp99等常用于评估软件系统的处理性能的指标概念”的完整攻略,以下是详细说明: 什么是tp90、tp99等指标? 在软件系统的性能评估中,通常使用一指标来衡量系统的处理性能。其中,tp90、tp99等指标是常用的性能指标之一。 tp90:表示系统处理请求的90%的时间。 tp99:表示系统处理请求的99%的时间。 这些…

    other 2023年5月7日
    00
  • h3csnmp配置解析

    h3csnmp配置解析 简介 h3csnmp是华三公司推出的一款网路管理软件,用于网络运维人员对华三设备进行管理。在使用h3csnmp的过程中,需要对其进行相应的配置。本文将对h3csnmp进行配置解析,帮助网络运维人员更好地使用华三设备。 配置文件 h3csnmp的配置文件主要分为以下几个部分: SNMP服务配置 <snmpagent> &lt…

    其他 2023年3月28日
    00
  • 详解Linux下Tomcat开启查看GC信息

    下面是“详解Linux下Tomcat开启查看GC信息”的完整攻略,包含以下步骤: 1. 下载并安装JDK 首先需要在Linux系统上下载并安装Java Development Kit (JDK),以便在后续的步骤中使用。可以通过官方网站或者包管理软件来下载并安装。 2. 安装Tomcat服务器 如若未安装Tomcat服务器,需要下载并安装。下载官方二进制包,…

    other 2023年6月27日
    00
  • object对象转为string数组

    以下是将object对象转为string数组的完整攻略: 将object对象转为string数组 在JavaScript中,您可以使用Object.keys()和Array.map()将object对象转为string数组。以下是实现效果的步骤: 使用Object.keys()方法获取object对象键。 javascript const = { a: 1,…

    other 2023年5月7日
    00
  • 程序资讯

    程序资讯完整攻略 概述 程序开发是一个不断学习与积累的过程,时刻需要关注行业最新的动态,获取最新最全面的技术资讯和相关的技巧。而程序资讯是一个提供最新技术资讯、讨论热点技术话题、介绍前沿技术的专业网站。本攻略将详细介绍如何使用程序资讯获取最新最全面的技术资讯。 注册账号 首先,您需要在程序资讯中注册一个账号,这样您就可以进行更多操作。 打开程序资讯官网; 点…

    other 2023年6月25日
    00
  • 手机存储空间不足怎么清理?

    手机存储空间不足清理攻略 当手机存储空间不足时,我们可以采取以下步骤来清理手机存储空间,以释放更多的空间供使用。 1. 删除不需要的应用程序和游戏 首先,我们可以删除不再使用或不需要的应用程序和游戏来释放存储空间。以下是一个示例说明: 打开手机的设置菜单。 点击“应用程序”或“应用管理器”选项。 浏览已安装的应用程序列表,找到不再使用的应用程序。 点击选中的…

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