Android总结:Activity的生命周期

一、Activity的基本概念
  Activity是Android的四大组件之一,它是一种可以包含用户界面的组件,主要用于和用户进行交互,比如打电话,照相,发送邮件,或者显示一个地图!Activity用于显示用户界面,用户通过Activity交互完成相关操作 , 一个App允许有多个Activity。

二、Activity的生命周期
  Activity生命周期是每一个Android开发者都必须掌握的,当我们深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序,让我们的程序拥有更好的用户体验

2.1、Activity的生命周期图
在这里插入图片描述

2.2、Activity的四种状态
  每个Activity在其生命周期中最多可能会有四种状态。

1.运行状态
  当一个Activity位于返回栈的栈顶时,这时Activity就处于运行状态,系统会将处于栈顶的Activity显示给用户。

2.暂停状态
  当一个Activity不再处于栈顶位置,但仍然可见,这时Activity就进入了暂停状态。初学者可能会有这样的疑问,既然Activity都已经不在栈顶了,怎么会还可见呢,这是因为并不是每一个Activity都会占满整个屏幕的,比如对话框形式的Activity只会占用屏幕中间的部分区域。
  当对话框消失,原来的Activity重新获得焦点的时候,这时,这个Activity会从暂停状态(onPause())直接进入运行状态(onResume())

3.停止状态
  当一个Activity不再处于栈顶位置,并且完全不可见的时候,就进入了停止状态。

4.销毁状态
  当一个Activity从返回栈中移除后就变成了销毁状态。

四种状态中,运行状态和暂停状态是用户可见的,停止状态和销毁状态是用户不可见的

2.3、Android返回栈
  Android是使用任务(Task)来管理Activity的,一个任务就是一组存放在栈里的Activity集合,这个栈被称作返回栈,栈(堆栈)是一种先进后出的数据结构,这里顺便提一下另一种常见的数据结构:队列,队列是一种先进先出的数据结构。

每当启动一个新的Activity时,它会被放入返回栈中,并处于栈顶的位置。每当我们按下Back键或调用activity的finish()方法去销毁一个活动时,处于栈顶的Activity会出栈,这时前一个入栈的Activity就会重新处于栈顶的位置。系统总是会显示处于栈顶的Activity给用户。

2.4、Activity的生存期
  Activity类中定义了7个回调方法,覆盖了Activity生命周期的每一个环节,下面来一一介绍这7个方法

1.onCreate()
  这个方法在每一个Activity类都会有,当我们新建一个Activity类时,一定会重写父类的onCreate方法,onCreate方法会在Activity第一次被创建时调用。我们应该在这个方法中完成Activity的初始化操作,比如说加载布局,初始化布局控件,绑定按钮事件等。

2.onStart()
  这个方法在Activity由不可见变为可见时调用。

3.onResume()
  这个方法在Activity准备好和用户交互的时候调用。此时的Activity一定位于返回栈的栈顶,并且处于运行状态,用户可见。

4.onPause()
  这个方法在系统准备去启动或者恢复另一个Activity的时候调用。

  • 多个Activity之间采用的是后退栈实现的,每当从子的Activity回退的时候,子Activity会调用onDestroy()方法,activity多次创建会导致空间的浪费,对此,可以使用子Activity进行单例模式的创建。

  • 单例模式的activity不会在回退的时候就调用onDestroy()方法,而是在内存空间不足down掉或者是主Activity被关闭的时候调用onDestroy方法。

5.onStop()
  这个方法在Activity完全不可见的时候调用。它和onPause()方法的主要区别在于,如果启动的新Activity是一个对话框式的activity,那么,onPause()方法会得到执行,而onStop()方法并不会执行。
  
onStop方法后将执行的方法:

  • 如果重新恢复一个Activity时: onRestart() -> onStart()
  • .是内存空间不足的时候直接挂掉:不会调用onDestroy()方法(这里和上面图片有一些不太一样的地方,官方文档给的图片是调用onStop方法之后在内存空不足的情况下是不调用destroy方法直接挂掉)
  • 关闭Activity的时候调用onDestroy()方法。

6.onDestory()
  这个方法在Activity被销毁之前调用,之后Activity的状态将变为销毁状态。

7.onRestart()
  这个方法在Activity由停止状态变为运行状态之前调用,也就是Activity被重新启动了。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值