1、activity

它是 android 应用程序的基本功能单元。一个Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,例如拨号、拍照。Activity 本身是没有界面的。activity类创建了一个窗口,开发人员可以通过setContentView(View)接口把UI放到activity创建的窗口上。每一个activity给予一个窗口,在上面可以绘制用户接口。窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。

一个应用程序(APK文件)通常由多个activities组成,他们通常是松耦合关系。通常,一个应用程序中的activity被指定为"main"activity,当第一次启动应用程序的时候呈现给用户的那个activity。每一个activity然后可以启动另一个activity为了完成不同的动作。每一次一个activity启动,前一个activity就暂停或停止了,但是系统保留activity在一个栈上(“back stack”)。当一个新activity启动,它被推送到栈顶,取得用户焦点。符合简单“后进先出”原则,所以,当用户完成当前activity然后点击back按钮,它被弹出栈(并且被摧毁),然后之前的activity恢复。这些状态转换都是activity的生命周期的部分。

要理解activity的生命周期,首先需要明白activity的四种状态

一、Active/Runing (活动的/运行状态)   最直接的表现是:它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。

二、Paused(暂停) 最直接的表现是:它仍然可见,但它已经失去了焦点故不可与用户交互。例如被一个透明样式的 Activity 覆盖的状态或者弹出dialog(对话框)时;此时它依然与窗口管理器保持连接,系统继续维护其内部状态,但是不能与用户交互,不能操作;

三、Stop(停止) 最直接的表现是: 处于完全不可见的Activity,被另一个Activity完全覆盖,比如从一个activity1跳转到另外一个Activity2,Activity2(可见)处于屏幕的顶端并完全覆盖了activity1

四、Killed(销毁或结束) : 被系统杀死回收或者没有被启动时处于 Killed 状态。

知道了activity的四种状态,下面来理解activity的生命周期

一个应用程序与用户交互(如打开Android新闻客户端,浏览新闻)

首先展现的是一条一条的新闻列表 其经历:activity的生命周期

onCreate:在这里创建界面,做一些数据的初始化工作。例如创建指定Activity的布局文件、数据的绑定等;

onStart: 当Activity处于可见时(即显示在屏幕上)将调用这个函数;

onRestart:当Activity从停止状态进入活动状态前,将调用这个函数;

onResume:当Activity获得焦点,也就是说Activity能够与用户交互的时候将调用这个函数,这个时刻Activity位于Activity栈的顶端

onPause:当Activity进入暂停状态将调用这个函数,但在这个时刻我们一般用来保存持久的数据或者释放占用的资源。

onStop:当Activity完全被遮时将调用这个函数,

onDestory:当Activity在被终止前,即将进入非活动状态前,将调用该函数,一般以下两种情况下会调用onDestory函数1、调用Activity的finish方法2、当Android系统资源不足的时候

下面来自网络

从下面的日志日志可以看出区别:

1.从FirstActivity跳到SecondActivity时

FirstAcvity ---> onCreate
FirstAcvity --->onStart
FirstAcvity --->onResume
FirstAcvity --->onPause
SecondActivity--->onCreate
SecondActivity--->onStart
SecondActivity--->onResume
FirstAcvity --->onStop

现在给AndroidMainfest.xml中的SeconedActivity属性加入android:theme="@android:style/Theme.Dialog",则SeconedActivity将以对话框形式出现,不会对FirstAcvity形成遮盖.

这时的状态输出为:

FirstAcvity ---> onCreate
FirstAcvity --->onStart
FirstAcvity --->onResume
FirstAcvity --->onPause
SecondActivity--->onCreate
SecondActivity--->onStart
SecondActivity--->onResume

这时FirstAcvity比完全遮盖时少调用了onStop方法.


以下两种情况下 都只会触发onPause而不会触发onStop

1. 一个透明的包含Dialog的Activity 出现

2. 按poweroff锁屏

显示一个非activity的Dialog,是不会调用onPause和onStop的,因为此Dialog属于activity

android 知识点汇总的更多相关文章

  1. Android 开发框架汇总

    Android 开发框架汇总 时间过的真快,转眼间就要进入到16年的8月了,现在应该是三伏期间,一个字“热”.前端时间整理了一篇“JS前端框架汇总”,然后紧接着又抽时间学习了一下Android开发,在 ...

  2. nginx几个知识点汇总

    WHY? 为什么用Nginx而不用LVS? 7点理由足以说明一切:1 .高并发连接: 官方测试能够支撑 5 万并发连接,在实际生产环境中跑到 2 - 3 万并发连接数.?2 .内存消耗少: 在 3 万 ...

  3. python全栈开发 * 10知识点汇总 * 180612

    10 函数进阶 知识点汇总 一.动态参数 形参的第三种1.动态接收位置传参 表达:*args (在参数位置编写 * 表⽰接收任意内容) (1)动态位置参数def eat(*args): print(a ...

  4. Android开发工程师文集-Android知识点讲解

    前言 大家好,给大家带来Android开发工程师文集-Android知识点讲解的概述,希望你们喜欢 WebView讲解 一般通过Intent调用系统的浏览器: Uri uri = Uri.parse( ...

  5. 清华大学OS操作系统实验lab1练习知识点汇总

    lab1知识点汇总 还是有很多问题,但是我觉得我需要在查看更多资料后回来再理解,学这个也学了一周了,看了大量的资料...还是它们自己的80386手册和lab的指导手册觉得最准确,现在我就把这部分知识做 ...

  6. c++ 函数知识点汇总

    c++ 函数知识点汇总 swap函数 交换两个数组元素 比如 swap(a[i],a[j]); 就是交换a[i] 和 a[j] 的值 strcpy() 复制一个数组元素的值到另一个数组元素里 strc ...

  7. 前端开发 JavaScript 干货知识点汇总

    很多初学的朋友经常问我,前端JavaScript都需要学习哪些东西呀?哪些是JavaScript的重点知识啊? 其实做前端开发工程师,所有的知识点都是我们学习必备的东西,只有扎实的技术基础才是高薪的关 ...

  8. BBS项目知识点汇总

    目录 bbs项目知识点汇总 一. JavaScript 1 替换头像 2 form表单拿数据 3 form组件error信息渲染 4 添加html代码 5 聚焦操作 二 . html在线编辑器 三 . ...

  9. Java面试知识点汇总

    Java面试知识点汇总 置顶 2019年05月07日 15:36:18 温柔的谢世杰 阅读数 21623 文章标签: 面经java 更多 分类专栏: java 面试 Java面试知识汇总   版权声明 ...

随机推荐

  1. 将make的输出重定向到文件(转)

    原文:将make的输出重定向到文件 [用法] 1.想要把make输出的全部信息,输出到某个文件中,最常见的办法就是:make xxx > build_output.txt此时默认情况是没有改变2 ...

  2. k8s部署prometheus

    https://www.kancloud.cn/huyipow/prometheus/527092 https://songjiayang.gitbooks.io/prometheus/content ...

  3. Scala进阶之路-Spark底层通信小案例

    Scala进阶之路-Spark底层通信小案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Spark Master和worker通信过程简介 1>.Worker会向ma ...

  4. NFS无法启动解决方式

    今天一台挂载nfs磁盘的服务器出现异常,数据不能写入,执行 df -h 卡住不动. 登录nfs server查看发现nfs为启动. [root@server10-13 web]# exportfs [ ...

  5. Python基础【day02】:字符串(四)

    在Python中字符串本身有带很多操作,字符串的特性,不可以被修改 0.字符串常用功能汇总 1.字符串的定义 #定义空字符串>>> name=''#定义非空字符串 >>& ...

  6. java的递归查询大体思路

    场景:递归查询是我们开发中很常见的,如果没有一个比较好的思路,这将会让我们很头疼. 我这里介绍一个查询部门的例子,希望能给你一些启发 部门sql -- ------------------------ ...

  7. 在 chrome 上导出 pdf

    用html+css写出网页,然后在chrome上导出pdf 1. command + p:快捷呼出打印: 2. “目标打印机”:选择“更改”,之后选择“另存为PDF”: 3. 点“更多设置”,可以勾选 ...

  8. toolbar 相关

    1.改变toolbar 返回键和扩展按钮颜色,只需要在style文件中添加这一行即可: 2.toolbar的title是否显示是这样控制的:

  9. <algorithm>里的sort函数对结构体排序

    题目描述 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好.现有一堆杂乱的机房签到.签离记录,请根据记录找出当天开门和关门的人. 输入描述: 每天的记录在第一行给出记录的条目数M (M &g ...

  10. golang error信息转字符串 x := fmt.Sprintf("%s", err)

    _, _, ch, err := m.ZkConn.ChildrenW(node) if err != nil { x := fmt.Sprintf("%s", err) if s ...