Android开发之activity的生命周期详解

Android开发之activity的生命周期详解

在Android开发过程中,Activity是一个非常重要的组件,掌握Activity的生命周期,能够更好的开发高质量的Android应用程序。本文将深入介绍Activity的生命周期,包括常见的生命周期回调方法和示例。

Activity的生命周期

Activity的生命周期是指Activity从被创建到被销毁的整个过程,包括以下几个阶段:

  1. 创建阶段
  2. 可见阶段
  3. 前台阶段
  4. 暂停阶段
  5. 停止阶段
  6. 销毁阶段

每个阶段都有对应的生命周期回调方法,开发者可以在这些方法中执行相应的操作。

创建阶段

onCreate

Activity被创建时,系统会调用onCreate方法,这个阶段主要用来进行初始化工作,比如获取控件、绑定数据、设置布局等。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // 做一些初始化的工作
}

可见阶段

onStart

当Activity可见时,系统会自动调用onStart方法,这个阶段用来进行一些UI的准备工作,例如初始化变量、注册广播接收器等。

@Override
protected void onStart() {
    super.onStart();
    // 做一些UI准备工作
}

onResume

当Activity进入前台时,系统会自动调用onResume方法,这个阶段主要用来初始化一些资源,例如打开相机、启动服务等。

@Override
protected void onResume() {
    super.onResume();
    // 做一些资源初始化的工作
}

前台阶段

onPause

当Activity进入暂停状态时,系统会自动调用onPause方法,这个阶段用来保存一些必要的状态,例如暂停播放视频、保存当前位置等。

@Override
protected void onPause() {
    super.onPause();
    // 保存一些必要的状态
}

onStop

当Activity进入停止状态时,系统会自动调用onStop方法,这个阶段主要用来释放一些资源,例如清空缓存、关闭服务等。

@Override
protected void onStop() {
    super.onStop();
    // 释放一些资源
}

销毁阶段

onDestroy

当Activity被销毁时,系统会自动调用onDestroy方法,这个方法主要用来释放活动所占用的资源,例如关闭数据库、释放内存等。

@Override
protected void onDestroy() {
    super.onDestroy();
    // 释放所占用的资源
}

示例说明

示例1

public class MainActivity extends AppCompatActivity {

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

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

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

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

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

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

此示例演示了Activity生命周期各个阶段的生命周期回调方法,通过Log输出信息,可以清楚地看到Activity生命周期每个阶段的触发条件和触发顺序。例如,执行以下操作:

  1. 打开应用程序
  2. 点击Home键,返回桌面
  3. 再次打开应用程序
  4. 点击Back键,退出应用程序

输出结果如下:

onCreate executed
onStart executed
onResume executed
onPause executed
onStop executed
onDestroy executed
onCreate executed
onStart executed
onResume executed
onPause executed
onStop executed
onDestroy executed
onCreate executed
onStart executed
onResume executed
onPause executed
onStop executed
onDestroy executed

示例2

public class SecondActivity extends AppCompatActivity {

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

        Button button = findViewById(R.id.button);
        button.setOnClickListener(view -> {
            Intent intent = new Intent(SecondActivity.this, MainActivity.class);
            startActivity(intent);
            finish();
        });

        Log.d("SecondActivity", "onCreate executed");
    }

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

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

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

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

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

此示例演示了如何从一个Activity跳转到另一个Activity,并在后者销毁时返回前者。例如,执行以下操作:

  1. 打开应用程序
  2. 点击按钮,跳转到SecondActivity
  3. 点击Back键,返回MainActivity

输出结果如下:

onCreate executed
onStart executed
onResume executed
onPause executed
onCreate executed
onStart executed
onResume executed
onPause executed
onStop executed
onDestroy executed
onResume executed
onStop executed
onDestroy executed

总结

掌握Activity的生命周期对于开发高质量的Android应用程序非常重要。通过丰富的实践,开发者可以更好地理解Activity的生命周期,增加代码的可读性和可维护性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android开发之activity的生命周期详解 - Python技术站

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

相关文章

  • Windows量身定做的登录管理工具

    Windows量身定做的登录管理工具 Windows系统提供了许多登录管理工具,使得用户可以方便地管理登录设置。本文将详细介绍这些工具的功能和使用方法,包括: 本地用户和组管理器 计算机管理控制台 控制面板中的用户账户 本地用户和组管理器 本地用户和组管理器是一个强大的Windows管理工具,可以用来查看和修改本地计算机上的用户和组设置。它可以通过下列步骤打…

    other 2023年6月25日
    00
  • Python单链表原理与实现方法详解

    Python单链表原理与实现方法详解 什么是单链表 在计算机科学中,链表(Linked list)是一种常见的数据结构,是一种线性表,但是不像顺序表一样连续存储数据,而是在每一个节点(数据存储单元)里存放下一个节点的位置信息(即地址)。由于不必须按顺序存储,链表在插入的时候可以达到 O(1)O(1) 的复杂度,但是查找一个节点或者访问特定编号的节点则需要 O…

    other 2023年6月27日
    00
  • uniapp计算属性的使用

    Uniapp计算属性的使用 在Uniapp中,可以使用计算属性来根据已有的数据计算出新的数据。本文将介绍如在app中使用计算属性,并提供两个示例说明。 基本语法 计算属性是一个函数,它接收当前组件的数据对象作为参数,并返回一个新的数据对象。计算属性的基本语法如下: computed: { propertyName: function() { // 计算并返回…

    other 2023年5月7日
    00
  • tree默认选中

    在Web应用程序中,我们经常需要使用树形结构来展示数据。在某些情况下,我们需要在树形结构中默认选中某些节点。以下是一个完整攻略,介绍了如何在树形结构中默认选中节点。 步骤1:树结构 首先,我们创建一个树形结构,该结构包含多个节点。以下是一个示例: <ul id="tree"> <li> <span>No…

    other 2023年5月6日
    00
  • 第一次接触神奇的Bootstrap基础排版

    第一次接触神奇的Bootstrap基础排版攻略 1. 了解Bootstrap Bootstrap是一个流行的开源前端框架,通过提供一系列 CSS 和 JavaScript 组件,帮助我们快速搭建现代、响应式的网页设计。它内置了大量的样式和组件,使得我们能够轻松地进行排版、布局和美化。 2. 引入Bootstrap 为了使用Bootstrap,我们需要在网站上…

    other 2023年6月28日
    00
  • Visio怎么调出开发者选项?

    想要在Visio中调出开发者选项,需要经过以下步骤: 在Visio中打开“文件”菜单,并在菜单中选择“选项”; 在弹出的“选项”对话框中,找到“常规”选项卡,并向下滚动至底部; 在“常规”选项卡的底部,选中“显示开发人员选项卡”复选框; 点击“确定”按钮即可完成设置。 在Visio中开启开发者选项后,在菜单中将会多出一个选项卡,名为“开发人员”。在这个选项卡…

    other 2023年6月26日
    00
  • java二叉树的非递归遍历

    下面我详细讲解一下Java二叉树的非递归遍历的完整攻略。 1. 什么是二叉树? 二叉树(Binary Tree)是一种树型的数据结构,它的每个节点最多只有两个子节点,分别称为左子节点和右子节点。 2. 如何遍历二叉树? 二叉树的遍历有三种方式:前序遍历、中序遍历和后序遍历。 前序遍历:先访问根节点,再遍历左子树和右子树。 中序遍历:先遍历左子树,再访问根节点…

    other 2023年6月27日
    00
  • Spring Boot 实现Restful webservice服务端示例代码

    下面是Spring Boot实现Restful webservice服务端示例代码攻略的详细讲解。 1. 准备工作 首先,在项目中添加Spring Boot和Web依赖。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>s…

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