**您好,我是码农飞哥,感谢您浏览本文,欢送一键三连哦。
本文会介绍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应用程序交互的中枢。它有残缺的生命周期。

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