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

yizhihongxing

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日

相关文章

  • PHP命令空间namespace及use的用法小结

    PHP命名空间(namespace)及use的用法小结 PHP命名空间(namespace)是一种组织和管理代码的机制,它可以避免命名冲突,并提供更好的代码结构和可读性。在PHP中,命名空间可以用于将类、函数、常量等相关的代码组织在一起。 命名空间的定义和使用 命名空间可以通过namespace关键字来定义,它通常位于PHP文件的顶部,紧跟着<?php…

    other 2023年8月18日
    00
  • D3.js的基础部分之数组的处理数组的排序和求值(v3版本)

    D3.js的基础部分之数组的处理数组的排序和求值(v3版本) 在D3.js中,处理数组是非常常见的需求。本文将介绍如何使用D3.js的v3版本对数组进行排序和求值。 排序 D3.js提供了d3.ascending和d3.descending方法来排序数组。这两个方法都可以用于排序数字、日期和字符串。 d3.ascending d3.ascending方法用于…

    other 2023年6月25日
    00
  • 逆水寒素问技能进阶搭配图文介绍 素问技能进阶优先级顺序

    逆水寒素问技能进阶搭配攻略 1. 简介 《逆水寒》是一款古风题材的网游,其中素问技能是重要的战斗技能之一。本攻略将详细介绍素问技能进阶的优先级顺序,并给出两个示例说明。 2. 优先级顺序 在进行素问技能进阶搭配时,可以按照以下优先级顺序进行选择: 2.1 主动技能优先 主动技能通常具有较高的输出能力和战略价值,因此应该优先考虑选择主动技能进行进阶。 2.2 …

    other 2023年6月28日
    00
  • SQL Server误区30日谈 第14天 清除日志后会将相关的LSN填零初始化

    首先,需要说明的是,SQL Server误区30日谈系列是由国内权威SQL Server专家撰写的一系列博客,主要针对SQL Server使用中容易出现的误区进行解释和说明。第14天的主题是“清除日志后会将相关的LSN填零初始化”, 下面是完整攻略: 误区的概念 很多人都认为,当执行日志清除操作时,SQL Server会将相关的LSN置为0,以便下次执行日志…

    other 2023年6月20日
    00
  • Android 完全退出应用程序的解决方法

    Android 完全退出应用程序的解决方法 在Android应用程序中,用户通常可以通过点击手机的返回键或者是HOME键来跳出应用程序,但这并不代表该应用程序已经完全退出。这时,该应用程序可能仍在后台运行,需要进一步的处理才能退出完全。下面将介绍两种常见的方法来实现Android应用程序的完全退出。 方法一:使用系统API退出程序 Android系统提供了相…

    other 2023年6月25日
    00
  • 如何在 Illustrator 中混合对象?ai中混合工具怎样使用

    以下是在Adobe Illustrator中混合对象的完整攻略: 如何在 Illustrator 中混合对象 打开 Adobe Illustrator 并创建一个新文档。 在画布上创建两个或多个对象,这些对象将被混合在一起。可以是形状、路径、文字或图像等。 选择这些对象中的第一个对象。 在菜单栏中选择 \”对象(Object)\” > \”混合(Ble…

    other 2023年10月15日
    00
  • Windows内部命令

    Windows内部命令攻略 Windows内部命令是Windows操作系统自带的命令行工具,用于管理和维护操作系统和相关软件,可以通过命令行直接访问。本文将详细讲解Windows内部命令的使用。 命令行界面 Windows内部命令需要在命令行界面下使用,打开命令行界面的方法如下: 在开始菜单中搜索“命令提示符”,点击打开。 按下“Win+R”组合键,输入“c…

    other 2023年6月26日
    00
  • python函数的两种嵌套方法使用

    Python函数的两种嵌套方法使用攻略 在Python中,函数可以嵌套在其他函数中,这种嵌套可以帮助我们组织和管理代码。本攻略将详细讲解Python函数的两种嵌套方法的使用。 1. 内部函数(Inner Functions) 内部函数是指在一个函数内部定义的函数。内部函数可以访问外部函数的变量和参数,并且可以在外部函数的作用域之外被调用。下面是内部函数的使用…

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