做Android的同学说起 Activity,那绝对是熟悉的不能再熟悉了,但是越熟悉的东西往往越陌生。我们真的了解她吗?她是我们所认识的那样吗?或许是,或许不是!了解与否, 让我们往下看。首先借Android官网的这张图来展现Activity的生命周期,这张金字塔图比起那张所有书上都有的生命周期流程图绝对要来的爽快:


上图可以看到,最右边下方的Android机器人代表启动一个Activity,经过一系列的操作和过程,经过三个生命周期回调方法,到达金字塔的顶层,
爬到顶层就可以供用户操作了。然后从金字塔顶往下,再经过三个生命周期方法,就又到了金字塔的另一边底层,Activity就销毁了。但是当下金字塔的时
候,只要没到最下面,都有通道可以回到最顶层。这有几点或许是平时我们没有注意的:

1.Activity在onStart方法调用后,就处于可见状态了(visible)

2.当经过onPause方法后处于暂停状态(Paused),这时Activity处于半透明状态,为不可操作的,比如弹出一个模态框。这时Activity不会执行任何代码

3.Activity在调用onStop方法后即处于用户不可见的状态了(invisible)

4.onCreate方法在整个生命周期只会被调用一次

5.自定义Activity继承Activity类后有没有需要必须实现的方法?答案是没有,但是要想启动和显示一个Activity,就必须实现onCreate方法并指定布局文件

6.大部分的清理操作应该在onPause和onStop中执行,如果在onCreate中开启了耗时线程或耗资源的线程操纵,应该在onDestroy中杀死线程

官方文档中有这么一段注释值得我们注意:

Note: The
system calls onDestroy() after
it has already called onPause() and onStop() in
all situations except one: when you call finish() from
within the onCreate() method.
In some cases, such as when your activity operates as a temporary decision maker to launch another activity, you might call finish()from
within onCreate() to
destroy the activity. In this case, the system immediately calls onDestroy()without
calling any of the other lifecycle methods.


统一般都是在执行完onPause和onStop方法后再执行onDestroy方法,但是当在onCreate方法中调用了Activity的
finish()方法后,比如在onCreate方法里启动新的Activity并调用了finish方法,这时系统会直接调用onDestroy方法!

(转自http://blog.csdn.net/ryantang03/article/details/8728279)

Activity生命流程的更多相关文章

  1. 浅谈Android的Activity运行流程(生命周期)

    关于Android的Activity运行流程,我们可以写一些程序来直观的查看Activity的运行流程.在这里我们使用Log工具来获取Activity运行日志.假如我们新建一个Android项目,Pr ...

  2. Android Activity生命周期详讲

    管理 Activity 生命周期 通过实现回调方法管理 Activity 的生命周期对开发强大而又灵活的应用至关重要. Activity 的生命周期会直接受到 Activity 与其他 Activit ...

  3. Android体系结构及activity生命周期

    Android的系统架构采用了分层架构的思想,如图1所示.从上层到底层共包括四层,分别是应用程序程序层.应用框架层.系统库和Android运行时和Linux内核 Android的系统架构图    每层 ...

  4. 基础总结篇之一:Activity生命周期

    子曰:溫故而知新,可以為師矣.<論語> 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精 ...

  5. Android编程: Activity生命周期和LogCat使用

    学习内容:Activity生命周期和LogCat使用 ====Activity生命周期==== 图示(转载): 创建    onCreate重启    onRestart开始    onStart恢复 ...

  6. [JIT_APP]Activity生命周期相关的7个方法

    先发一张安卓官方文档里面的Activity生命周期图解 下面在对这7个生命周期内相关的方法做一些简单的介绍 OnCreate() 当Activity被创建的时候,会自动运行该方法.该方法做一些初始化动 ...

  7. 基础总结篇之中的一个:Activity生命周期

    子曰:溫故而知新,能够為師矣.<論語> 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就全然掌握,那基本不大可能,所以我们须要常常回过头再细致研读几遍,以领悟到作者的思想精 ...

  8. 转:基础总结篇之一:Activity生命周期

    熟悉javaEE的朋友们都了解servlet技术,我们想要实现一个自己的servlet,需要继承相应的基类,重写它的方法,这些方法会在合适的时间被servlet容器调用.其实android中的Acti ...

  9. 文章之间的基本总结:Activity生命周期

    孔子:温故而知新.它可以作为一个教师.<论语> 同样的学习技巧.对于技术文件或书籍的经典技术,期待再次看到它完全掌握,这基本上是不可能的,所以,我们常常回来几次,然后仔细研究,为了理解作者 ...

随机推荐

  1. Kotlin语言学习笔记(4)

    函数 // 函数定义及调用 fun double(x: Int): Int { return 2*x } val result = double(2) // 调用方法 Sample().foo() / ...

  2. pycharm ideavimrc设置备忘

    文件存放位置 windows下 C:\Users\你的用户名\.ideavimrc 注:如果要映射pycharm 中的一些命令可以 在pycharm 中 edit->Macros->Sta ...

  3. one by one 项目 part 4

    出现异常”The last packet sent successfully to the server was 0 milliseconds ago.“的大部分原因是由于数据库回收了连接,而系统的缓 ...

  4. js中常见的内置对象

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. Ansible介绍/安装/入门

    http://docs.ansible.com/ansible/ https://galaxy.ansible.com/ Ansible是一个IT自动化工具. 它可以配置系统,部署软件,并编排更先进的 ...

  6. TOMCAT Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.

    十二月 31, 2014 2:32:45 下午 org.apache.coyote.http11.AbstractHttp11Processor process信息: Error parsing HT ...

  7. git实用操作21条

    1.建空目录 mkdir e:\gg 2.把该目录变成仓库 git init   //发现当前目录下多了一个.git 3.新建文件readme.txt 4.添加文件到仓库  git add readm ...

  8. jQuery对象转换为DOM对象(转)

    jQuery对象转换为dom对象 只有jQuery对象才能调用jQuery类库的各种函数,同样有些dom对象的属性和方法在jQuery上也是无法调用的,不过基本上jQuery类库提供的函数包含了所有的 ...

  9. TZOJ 1840 Jack Straws(线段相交+并查集)

    描述 In the game of Jack Straws, a number of plastic or wooden "straws" are dumped on the ta ...

  10. DB2事务日志

    1.DB2数据库的日志原理 事务日志记录数据库中所有对象和数据的改变,在早前版本中最大可达256G,其大小为( logprimary + logsecond ) * logfilsiz,其中logpr ...