Android开发基础之Activity,图解Activity状态与生命周期

Posted 舒泱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发基础之Activity,图解Activity状态与生命周期相关的知识,希望对你有一定的参考价值。

       

       

一、Activity是什么?

        Activity是android的四大组件之一,Activity利用View来实现应用程序的图形用户界面GUI,而手机用户则是通过GUI和应用程序做交互。

        一个Activity代表一个显示给用户的屏幕。一个应用程序需要多少个Activity?每个Activity表示什么样的界面?这些问题都取决于具体的程序设计。通常,程序启动后显示的第一幅画面是应用程序的第一个Activity,应用程序需要至少一个Activity作为主屏幕,同时需要其他Activity作为补充。
       

       

二、Activity栈

        Android系统中,所有Activity都被保存在Activity栈中。
        当启动一个新Activity后,新Activity就会被压栈并处于栈顶,用户屏幕上显示的就是栈顶的Activity。如果用户按下返回键回到上一个画面,那么栈顶的Activity就会被弹出,之前位于栈顶的第二个Activity就会变成栈顶Activity。
在这里插入图片描述

       

       

       

三、Activity状态

Activity有以下4种状态:

  • 活跃。 当一个Activity位于Activity栈顶的时候,它所代表的用户界面处于屏幕的前端,对于用户来说是可见的 ,而且用户还能在这个界面上进行输入,也就是它拥有用户输入的焦点
  • 暂停。 暂停状态下的Activity对用户来说是可见的 ,但它不拥有用户输入的焦点 。出现这种情况的场景可能是:在应用程序的前端出现了一个非全屏显示的Activity,处于暂停状态的Activity位于这个非全屏显示的Activity下方,用户还是能看见,看不能在暂停状态的Activity用户界面上进行输入。
  • 结束。 一个暂停的Activity在屏幕上变得不可见时,它的状态就是结束。系统会在内存中保存结束状态的Activity的状态信息,以便当Activity变为可见时,系统能迅速切换其状态。
  • 销毁(非活跃)。 当Activity彻底结束后,从Activity栈中移除,这时的Activity状态为非活跃。

       
        程序员和用户都无法预知Activity状态的变化,Activity状态的变化完全由Android内存管理器决定,变化顺序是不确定的。
        当系统内存不足需要释放资源时,处于结束状态的Activity是首选对象。通常系统不会结束处于暂停状态下的Activity,但如果系统内存严重不足,系统也可能会释放暂停的Activity。

在这里插入图片描述

       

       

       

四、Activity生命周期

        Activity完整的生命周期是指一个Activity从创建(调用onCreate())到销毁(调用onDestroy())的过程,期间可能经历多个状态的变化迁移,Android系统提供了例如onCreate()、onStart()、onResume()等回调方法,当Activity状态发生变化时,相应的方法就会被调用。

  • onCreate():用于初始化Activity。从包中获取数据,填充界面,为界面控制分配数据,创建服务和线程。
  • onStart():在Activity对用户可见时调用。如果Activity进入前台,则紧跟着onResume();如果活动被隐藏,则紧跟着onStop()。
  • onResume():在Activity将开始与用户互动时调用。此时的Activity位于Activity栈的顶部,可见且具有用户输入的焦点。
  • onPause():当Activity进入后台但尚未被杀死时,被称为Activity生命周期的一部分。
  • onStop():不再对用户可见时调用。
  • onDestroy():Activity结束时调用。重载onDestroy()方法可以清除在调用onCreate()时创建的资源,通常,在onDestroy()中我们需要确保网络链接、数据连接等已经被关闭。
  • onRestart():在Activity停止之后,再次开始之前调用。

在这里插入图片描述

以上是关于Android开发基础之Activity,图解Activity状态与生命周期的主要内容,如果未能解决你的问题,请参考以下文章

Android基础之四大组件---Activity

Android 四大组件之Activity 基础总结

Android 面试之必问Android基础

Android应用开发基础之十一:新特性

Android:图解Activity启动流程源码(整体流程)

AndroidActivity生命周期研究