关于python:❤️Android精进之路04Android核心组件ActivityActivity的生命周期是怎样的❤️

34次阅读

共计 3250 个字符,预计需要花费 9 分钟才能阅读完成。

** 您好,我是码农飞哥,感谢您浏览本文,欢送一键三连哦。
本文会介绍 Android 中的外围组件 Activity, 重点介绍其生命周期 **
Android 系列文章都在 Android 专栏中,欢送小伙伴关注。

@[TOC]

往期回顾

❤️【Android 精进之路 -01】定打算,重口头来学 Android 吧❤️
❤️【Android 精进之路 -02】装置 Android Studio,意识 Android SDK, 一步步学习❤️
❤️【Android 精进之路 -03】创立第一个 Android 应用程序居然如此简略❤️

Activity 组件是什么

Activity 组件是 Android 的用户接口程序,它充当了 Android 应用程序与用户的交互入口。能够将它比喻成 Android 管理员:须要在屏幕显示什么,解决用户的不同操作都须要由 Activity 来协调治理。比方用户须要打电话,拍照等操作都能够通过 Activity 提供的交互接口来实现。

每个 Activity 都提供了用户界面窗口(即屏幕)。个别状况下,该界面窗口会填满整个屏幕,然而也能够比屏幕小或者浮在其余窗口之上。

一个 Android 应用程序通常蕴含多个屏幕,即意味着有多个 Activity,然而只能有一个 Activity 作为应用程序的主 Activity。这个主 Activity 就相当于 Java 应用程序中的 main 函数,是 Android 应用程序启动后用户看到的第一个屏幕。

Android 应用程序中的多个 Activity 能够间接互相调用以实现不同工作。例如:
一个电子邮件的应用程序中主 Activity 提供了显示电子邮件收件箱的屏幕,能够从主 Activity 启动其余 Activity 用于执行写邮件和关上邮件这类工作。

Activity 的生命周期

一个 Activity 从被 创立 —> 启动 –> 暂停 –> 销毁 是一个残缺的生命周期。当新的 Activity 被启动的时候,之前的 Activity 就会进行,然而不会立马被销毁,而是被压入到 ” 后退栈(Back Stack)” 的栈顶。这里的后退栈遵循 ” 后进先出 ” 的准则,当新启动的 Activity 被应用结束,用户单击 ”Back” 按钮时,以后的 Activity 会被销毁,而原先的 Activity 会被从 ” 后退栈 ” 中弹出并被激活。

Activity 实质上有三种状态:

  1. 运行状态:Activity 运行于屏幕的最上层并且取得了用户焦点
  2. 暂停状态:Activity 仍然存在,然而没有取得用户焦点。以后的 Activity 没有被运行态的 Activity 遮挡住,用户是能够看到其用户界面的。
  3. 进行状态:以后的 Activity 齐全被处于运行态的 Activity 遮挡住,其用户界面齐全不被用户看见。如果 Activity 来到可见阶段,长时间失去焦点,就很可能会被零碎销毁以开释资源。当然,即便该 Activity 被销毁掉,用户对该 Activity 所做的更改也会被保留在 Bundle 对象中,当用户须要从新显示该 Activity 时,Android 零碎会依据之前保留的状态信息将该 Activity 重建。

当 Activity 状态产生扭转时,都会通过状态回调函数来告诉 Android 零碎,开发人员能够通过这些回调函数对 Activity 进行进一步的管制。这些状态回调函数由 android.app.Activity 类提供。所有的 Activity 都必须要继承 android.app.Activity 类或者它的子类。Activity 的生命周期如图 1 所示:

图 1 是 Android 官网开发文档上提供的图,这里我翻译了一下,提供了一个汉化版的图供有须要的同学查看。

图 1 和图 2 具体的展现了 Activity 的生命周期。其次要有如下几个流程:

  1. 当 Activity 启动时:会调用 onCreate(),onStart(),onResume() 三个办法,使 Activity 处于运行状态,即在屏幕显示并取得用户焦点。
  2. 当用户切换到其余 Activity 时:该 Activity 会进入暂停状态,会调用 onPause()办法,当用户返回该 Activity 时会从新调用 onResume()办法激活该 Activity。
  3. 当用户敞开该利用,切换到其余应用程序是会调用 onStop(),onDestory() 办法,销毁该 Activity。
  4. 当该 Activity 长时间不显示的话则调用 onStop()办法进入进行状态,用户从新浏览该 Activity 时会调用 onRestart(),onStart(),onResume() 三个办法,Activity 从新进入运行状态。

上面就用代码演示一下:这里创立了一个名为 MainActivity 的简略 Activity。在每个回调办法中都打印了XXX 执行了,通过演示让大家对 Activity 的生命周期有一个更清晰的印象。

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";

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

    @Override
    protected void onStart() {super.onStart();
        Log.i(TAG, "onStart 执行了");
    }

    @Override
    protected void onResume() {super.onResume();
        Log.i(TAG, "onResume 执行了");
    }

    @Override
    protected void onPause() {super.onPause();
        Log.i(TAG, "onPause 执行了");
    }

    @Override
    protected void onDestroy() {super.onDestroy();
        Log.i(TAG, "onDestroy 执行了");
    }

    @Override
    protected void onStop() {super.onStop();
        Log.i(TAG, "onStop 执行了");
    }
}

我的项目启动之后的演示成果如下:
[video(video-ugN8SbXU-1632356560660)(type-bilibili)(url-https://player.bilibili.com/p…)(image-https://ss.csdn.net/p?http://…)(title-Android 的 Activity 生命周期的演示)]
这里介绍一下每个回调函数:

名称 调用工夫
onCreate(Bundle savedInstanceState) 创立 Activity 时调用,该办法通过参数 savedInstanceState 保留 Activity 的对象的状态
onStart() Activity 变为在屏幕上对用户可见时调用
onResume() Activity 开始与用户交互时调用(无论是启动还是重启一个流动,该办法总是被调用)
onPause() 当用户切换到其余 Activity 时调用,该 Activity 会暂停,让出 CPU 的调用
onStop() 当该 Activity 长时间不显示时调用
onRestart() 重启启动曾经进行的 Activity 时调用
onDestroy() Activity 被齐全从零碎内存中移除时调用,该办法被调用可能是因为间接调用了 finish()办法或者零碎决定进行该流动并开释资源

总结

本文具体介绍了 Activity 的生命周期,须要明确的是 Activity 是 Android 应用程序与用户交互的入口,是用户与 Android 应用程序交互的中枢。它有残缺的生命周期。

全网同名【码农飞哥】。不积跬步,无以至千里,享受分享的高兴
我是码农飞哥,再次感谢您读完本文

正文完
 0