一 、Activity的生命周期

Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称为返回栈(Back Stack)。每当我们启动一个新的活动,它会在返回栈中入栈,并处于栈顶位置。当我们按下back键或调用finish方法去销毁一个活动时,处于栈顶的活动会出栈,这时前一个入栈的活动会重新处于栈顶。系统总是会显示处于栈顶的活动给用户。

Activity的四种状态

1 运行状态

当一个活动处于返回栈的栈顶时,就处于活动状态。

2 暂停状态

当一个活动不再处于栈顶,但是仍然可见时,活动就进入了暂停状态。

3 停止状态

当一个活动不再处于栈顶位置,并且完全不可见的时候,就处于停止状态。

4 销毁状态

当一个活动从返回栈中移除,就变成了销毁状态。

Activity中定义了7个回调方法,覆盖了活动的生命周期每一个环节。

1 onCreate 此方法会在第一次创建活动时调用,应该在里面完成初始化操作,如加载布局等等。

2 onStart 这个方法在活动由不可见变为可见时调用

3 onResume 这个方法在活动准备好和用户交互时调用,此时活动一定处于栈顶,并处于运行状态。

4 onPause 这个方法在活动准备启动或恢复另一个活动时调用。

5 onStop 这个方法在活动变为完全不可见时调用

6 onDestroy 这个方法在活动被销毁前调用,之后活动状态变为销毁。

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

活动在onCreate和onDestroy方法之间经历的叫做完整生存期。

活动在onStart和onStop之间经历的叫可见生存期

活动在onResume和onPause方法之间经历的叫前台生存期

二、Activity的启动模式。

活动的启动模式一共有四种,分别是standard,singleTop,singleTask和singleInstance。可以在AndroidManifest.xml文件中通过给activity标签指定launchMode来设置。

1 standard 模式

此模式是activity的默认启动模式。此模式下每启动一个活动,都会在返回栈中入栈,并处于栈顶位置。使用此模式的活动,当需要创建时,系统不会检查之前是否创建过,每次都创建一个新的。

2 singleTop 模式

此模式下,当系统发现活动已经在栈顶,创建一个新活动时,就会直接用栈顶的活动。但是当活动不处于栈顶时,创建时仍然会创建新的活动实例。

3 singleTask 模式

使用此模式可以很好地解决反复创建的问题。但是此模式使用时需要注意,当活动不处于栈顶时,再次创建活动时会直接将活动推至栈顶,并且将此活动之上的所有活动出栈。

4 singleInstance 模式

此模式不同于以往三个模式。此模式下会启用一个新的返回栈来管理这个活动。此模式可以用于其他程序相与当前程序共享这个活动实例时使用。

上述转载来自:https://blog.csdn.net/Kongou/article/details/80465577

Android相关面试题---初识的更多相关文章

  1. Android相关面试题---面试官常问问题

    版权声明:本文为寻梦-finddreams原创文章,请关注: http://blog.csdn.net/finddreams/article/details/44513579 一般的面试流程是笔试完就 ...

  2. Android动画效果之初识Property Animation(属性动画)

    前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...

  3. Android图片缓存之初识Glide

    前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...

  4. Android开发面试经——4.常见Android进阶笔试题(更新中...)

      Android开发(29)  版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http:/ ...

  5. 安卓高级 Android图片缓存之初识Glide

    前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...

  6. Android&Java面试题大全—金九银十面试必备

    声明本文由作者:Man不经心授权转载,转载请联系原文作者原文链接:https://www.jianshu.com/p/375ad14096b3, 类加载过程 Java 中类加载分为 3 个步骤:加载. ...

  7. 【Android】一道Android OpenGL笔试题

    一道Android OpenGL笔试题 SkySeraph May. 5th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.sky ...

  8. 二、Android学习第二天——初识Activity(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 一. Android学习第二天——初识Activity 昨天程序搭建成功以 ...

  9. C# 相关面试试题简单的总结

    最近一个搞NET开发的朋友离职了,想让我给他找点关于NET的相关面试题,准备抱一下佛脚,迎接新的挑战. 我赶紧找到以前检索的各种宝典,试题,今天梳理一下关于NET的基础知识点. 1.面向对象语言的三大 ...

随机推荐

  1. LinkedList类 和ArrayList类

    1)LinkedList类  LinkedList实现了List接口,允许null元素.此外LinkedList提供额外的get,remove,insert方法在 LinkedList的首部或尾部.这 ...

  2. 配置sonarqube与gitlab sso认证集成

    1.安装插件 sonar插件地址:https://github.com/gabrie-allaigre/sonar-auth-gitlab-plugin 安装插件: 下载插件然后通过maven打包然后 ...

  3. Python学习案例之人脸检测识别

    前言 随着科技的发展,人脸识别技术在许多领域得到的非常广泛的应用,手机支付.银行身份验证.手机人脸解锁等等. 识别 废话少说,这里我们使用 opencv 中自带了 haar人脸特征分类器,利用训练好的 ...

  4. Python--day11(函数的参数)

    今日主要内容 1.  函数的参数 2.  函数的嵌套调用 1.  形参与实参 1.  参数介绍: 函数为什么要有参数:因为内部的函数体需要外部的数据 怎样定义函数的参数:在定义函数阶段,函数名在后面( ...

  5. ABP之模块系统

    简介 ASP.NET Boilerplate提供了构建模块的基础结构,并将它们组合在一起以创建应用程序. 模块可以依赖于另一个模块. 通常,一个程序集被视为一个模块. 如果创建具有多个程序集的应用程序 ...

  6. Springcloud zuul和shiro结合

    一.目标1.外部请求统一从网关zuul进入,并且服务内部互相调用接口要校验权限 2.cloud和shiro结合,达到单点登录,和集中一个服务完成权限管理,其他业务服务不需要关注权限如何实现 3.其他服 ...

  7. 如何用Eclipse创建一个JavaSwing的项目

    创建之前必须先给开发工具安装WindowBuilder插件(安装方法可自行百度) 方式一: 创建项目 new--other--WindowBuilder--SWT Designer----SWT/JF ...

  8. Flex弹性布局以及box-sizing

    (本篇内容代表本人理解,如有错误请指出!) box-sizing box-sizing 属性用于更改用于计算元素宽度和高度的默认的 CSS 盒子模型.可以使用此属性来模拟不正确支持CSS盒子模型规范的 ...

  9. gogs git代码管理

    Gogs 是一个基于 Go语言的开源的 Git 服务端.非常轻量,安装也很简单.官网https://gogs.io/docs/installation/install_from_binary 下载后解 ...

  10. <TCP/IP原理> (二) OSI模型和TCP/IP协议族

    1.OSI参考模型 1)作用 2)各层的名称和功能 2.对分层网络协议体系的理解 1)不同节点:层次组成不同,作用不同 2)横向理解:虚通信.对等实体.协议.PDU 3)纵向理解:封装与解封.服务.接 ...