Android  Activity生命周期和堆栈管理的详解

Activity的生命周期

Activity是Android中的四大组件之一,也是最基本,最重要的组件,是android系统提供一个可视化的,能与用户交换的组件。
系统提供的组件,不需要用户实例化,用户也不能实例化,是系统进行回调,例如web开发的servlet也是系统提供的,和android 的其他系统组件一样。

那么不需要我们实例化我们怎么用呢,这些组件都有相同的特点就是:

  1.都需要在配置文件中注册

  2.都需要自定义类去继承系统的Api

  3.都有自己的生命周期

那么Activity的生命周期有那些方法呢:

  1.onCreate
  2.onStart
  3.onrestart
  4.onResume
  5.onpause
  6.onstop
  7.ondestroy

Activity总共有以上7个回调方法

Activiy总共有三种小的生命周期

场景一

一个Activity的开启到销毁

OnCreate---onStart----onResume------onPause-----Onstop---onDestroy 

这是一个完整的生命周期

场景二

A Activity 跳转到 到 B Activity (BActivity是完全覆盖AActivity)

AOnCretate-----AOnStart----AOnResume------AOnPause------BOnCreate-----BOnStart------BOnReSume ----AOnStop

B activity 返回到A Activity生命周期执行的回调是:

BOnPause---AOnRestart--AOnResume---BOnstop---BOnDestory

场景三

A Activity跳转到B Activity(B Activity 是一个 对话框形式的Activity 或者 BActivty是一个透明的)

AOnCretate-----AOnStart----AOnResume ------AOnPause------
BOnCreate-----BOnStart------BOnReSume ----

B activity 返回到A Activity生命周期执行的回调是:

BOnPause---AOnResume---BOnstop---BOnDestory

场景四

手机的横竖屏切换,android的生命周期方法的重新执行,

    onPause
    onstop
    ondestroy
    oncreate
    onstart
    onresume

如果想横竖屏切换时,不重新走生命周期,需要清单为Activity配置属性:configChanges
也可以设置屏幕 锁定为横屏或竖屏 ,screenOrientation:lanscape | portriant

2、Activity的四种状态

运行 onResume
暂停 onPause
停止 onStop
销毁 onDestroy

3、Activity的三个生命周期

1>完整的 onCreate——onDestroy
2>可见的 onStart——onStop
3>活动的 onResume——onPause

Activity的堆栈管理模式

 数据结构
  队列:先进先出
  栈:先进后出

  每打开一个Activity,将会入栈,退出一个,将会出栈,采用栈的先进后出结构

启动模式

standard 标准启动

singleTop 单一栈顶

保证栈顶只有一个实例,任务栈中可能有很多实例
场景:浏览器 书签

singleTask 单一任务栈

  保证 所在的任务栈 ,只有一个实例
  比如说设置 A 为此模式,保证整个任务栈只有A一个实例,如果栈顶有其他Activity,再打开A时,将栈顶其他Activity全部出栈。

场景 如:webkit 内核

singleInstance单一实例

  保证整个系统的栈中,只有一个实例
  比如说设置 A 为此模式,那么 A将单独使用一个任务栈

场景:打电话 、闹铃响

如有疑问大家留言或者到社区讨论,共同进步,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Android非异常情况下的Activity生命周期分析

    Activity非异常情况下的生命周期是指,用户正常参与UI交互的情况下,Activity所经过的生命周期的改变:一般情况下,Activity会经过以下几个生命周期. 1.OnCreate(): 表示Activity正在创建,这个是生命周期的第一个方法,该方法只调用一次,在这个方法中,一般做变量初始化的操作,例如绑定一个Button控件的Id等. 2.onRestart(): 表示Activity正在重新启动,一般情况下,如果最前面的Activity从不可见状态变为可见状态时,onRestart

  • 故事讲解Activity生命周期(猫的一生)

    大家好,关于Android中Activity的生命周期,网上大多数文章基本都是直接贴图.翻译API,比较笼统含糊不清. 我就用故事来说一说: 有个人叫User,TA养了几只猫,有只猫叫Activity.User见证了Activity猫的一生. User想要一只小猫(想用一些功能),于是让一只母猫和一只公猫交配(触摸屏幕打开Activity界面), 之后经过母猫一段时间的孕育(Activity launched),小猫咪出生了(onCreate),取名叫Activity,放在笼子(App)里养.

  • Android Activity的生命周期详细介绍

    Android Activity的生命周期详细介绍 生命周期描述的是一个类从创建(new出来)到死亡(垃圾回收)的过程中会执行的方法.在这个过程中,会针对不同的生命阶段调用不同的的方法. Activity是Android中四大组件之一,是最常见的应用组件,也是用的最多的组件,它能够提供一个界面与用户进行交互.Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:onCreate  onDestory  onStart  onStop  onRes

  • Activity跳转时生命周期跟踪的实例

    android应用当中Activity间相互跳转比较常见.本文将通过例子跟踪一下2个Activity间跳转过程中生命周期的变化过程. 整个操作过程如下图所示: 1. 打开应用,自动开启First Activity: 2. 按下"Jump Button"按钮,打开Second Activity: 3. 按下"回退"按钮,退出Second Activity,自动回到First Activity: 4. 按下"回退"按钮,退出应用,自动关闭First

  • Android入门教程之组件Activity的生命周期详解

    目录 返回栈 Activity 状态 1. 运行状态 2. 暂停状态 3. 停止状态 4. 销毁状态 Activity 的生存期 onCreate() onStart() onResume() onPause() onStop() onDestroy() onRestart() 完整生存期 可见生存期 前台生存期 Activity 回收处理 返回栈 Android 中的 Activity 是可以层叠的,我们每启动一个新的 Activity,就会覆盖在原有的 Activity 之上,然后点击 Ba

  • android基础总结篇之一:Activity生命周期

    近来回顾了一下关于Activity的生命周期,参看了相关书籍和官方文档,也有了不小的收获,对于以前的认知有了很大程度上的改善,在这里和大家分享一下. 熟悉javaEE的朋友们都了解servlet技术,我们想要实现一个自己的servlet,需要继承相应的基类,重写它的方法,这些方法会在合适的时间被servlet容器调用.其实Android中的Activity运行机制跟servlet有些相似之处,Android系统相当于servlet容器,Activity相当于一个servlet,我们的Activi

  • Android Activity生命周期和堆栈管理的详解

    Activity的生命周期 Activity是Android中的四大组件之一,也是最基本,最重要的组件,是android系统提供一个可视化的,能与用户交换的组件. 系统提供的组件,不需要用户实例化,用户也不能实例化,是系统进行回调,例如web开发的servlet也是系统提供的,和android 的其他系统组件一样. 那么不需要我们实例化我们怎么用呢,这些组件都有相同的特点就是: 1.都需要在配置文件中注册 2.都需要自定义类去继承系统的Api 3.都有自己的生命周期 那么Activity的生命周

  • Android  Activity生命周期和堆栈管理的详解

    Activity的生命周期 Activity是Android中的四大组件之一,也是最基本,最重要的组件,是android系统提供一个可视化的,能与用户交换的组件. 系统提供的组件,不需要用户实例化,用户也不能实例化,是系统进行回调,例如web开发的servlet也是系统提供的,和android 的其他系统组件一样. 那么不需要我们实例化我们怎么用呢,这些组件都有相同的特点就是: 1.都需要在配置文件中注册 2.都需要自定义类去继承系统的Api 3.都有自己的生命周期 那么Activity的生命周

  • Android Activity生命周期详解

    Activity 的生命周期. 一.理解Activity Activity是Android程序的4大组件之一. Activity是Android程序的表示层.程序的每一个显示屏幕就是一个Activity. 学过WEB开发的同学,可以把Activity理解成网页中的一个JSP文件:或者你可以把它理解成一个Windows的窗口. 下面看一下Activity类的继承关系: 从这里可以看到Activity是Context类的子类,大家对此先有个印象.  二.理解Activity的生命周期 手机最重要也是

  • Android Activity生命周期调用的理解

    目录 状态 启动模式 操作APP时生命周期调用 Activity异常生命周期 总结 状态 活动存放在一个叫返回栈的一个集合,当重新打开一个Activity时,它就会出现在栈顶.当要销毁该活动时,调用finish()或back,栈顶的活动就会出栈. 运行状态:一个活动处于栈顶时 暂停状态:不处于栈顶,但仍然可见.(失去焦点,非全屏或透明的activity放置在栈顶) 停止状态:不处于栈顶,也不可见,但还是会为它保留一些变量的相关数据.(被覆盖) 销毁状态:在栈中移除(killed状态) 启动模式

  • Spring生命周期回调与容器扩展详解

    本篇主要总结下Spring容器在初始化实例前后,提供的一些回调方法和可扩展点.利用这些方法和扩展点,可以实现在Spring初始化实例前后做一些特殊逻辑处理. 下面主要介绍: 类级别的生命周期初始化回调方法init-method配置.InitializingBean接口和PostConstruct注解 容器级别的扩展BeanPostProcessor接口和BeanFactoryPostProcessor接口 1.类级别生命周期回调 1.1init-method 参照:Springbeanxsdin

  • Android开发中Activity的生命周期及加载模式详解

    本文给大家介绍Activity的生命周期,如果大家学习过iOS的小伙伴的话,Activity的生命周期和iOS中ViewController的生命周期非常类似.生命周期,并不难理解.一个人的生命周期莫过于生老病死,花儿的生命周期就是花开花谢了.在Android中Activity的生命周期莫过于Activity的创建到消亡的过程了.本篇博客就会介绍Activity生命周期中的不同阶段,通过实例的形式来窥探一下Activity的生命周期.搞明白Activity的生命周期是至关重要的,因为只有搞明白每

  • 两分钟让你彻底明白Android Activity生命周期的详解(图文介绍)

    大家好,今天给大家详解一下Android中Activity的生命周期,我在前面也曾经讲过这方面的内容,但是像网上大多数文章一样,基本都是翻译Android API,过于笼统,相信大家看了,会有一点点的帮助 ,但是还不能完全吃透,所以我今天特意在重新总结一下.首先看一下Android api中所提供的Activity生命周期图(不明白的,可以看完整篇文章,在回头看一下这个图,你会明白的): Activity其实是继承了ApplicationContext这个类,我们可以重写以下方法,如下代码: 复

  • Asp.Net Core中服务的生命周期选项区别与用法详解

    前言 最近在做一个小的Demo中,在一个界面上两次调用视图组件,并且在视图组件中都调用了数据库查询,结果发现,一直报错,将两个视图组件的调用分离,单独进行,却又是正常的,寻找一番,发现是配置依赖注入服务时,对于服务的生命周期没有配置得当导致,特此做一次实验来认识三者之间(甚至是四者之间的用法及区别). 本文demo地址(具体见WebApi控制器中):https://gitee.com/530521314/koInstance.git (本地下载)  一.服务的生命周期 在Asp.Net Core

  • 微信小程序生命周期和WXS使用实例详解

    目录 引言 生命周期 生命周期分类 生命周期函数 生命周期函数分类 WXS wxs 和 JavaScript 的关系* 内嵌 wxs 脚本 外联 wxs 脚本 WXS特点 总结 引言 经过web前端开发的学习,相信大家对于前端开发有了一定深入的了解,今天我开设了微信小程序专栏,主要想从移动端开发方向进一步发展,而对于我来说写移动端博文的第一站就是小程序开发,希望看到我文章的朋友能对你有所帮助. 生命周期 生命周期(Life Cycle)是指一个对象从创建->运行->销毁的整个阶段,强调的是一个

  • react新版本生命周期钩子函数及用法详解

    和旧的生命周期相比 准备废弃三个钩子,已经新增了两个钩子 React16 之后有三个生命周期被废弃(但并没有删除) componentWillMount( 组件将要挂载的钩子) componentWillReceiveProps(组件将要接收一个新的参数时的钩子) componentWillUpdate(组件将要更新的钩子) 新版本的生命周期新增的钩子 getDerivedStateFromProps 通过参数可以获取新的属性和状态 该函数是静态的 该函数的返回值会覆盖掉组件状态 getSnap

随机推荐