http://www.cnblogs.com/kofi1122/archive/2011/04/10/2011772.html

Activity生命周期之我见

关于Activity生命周期的文章很多,而且大部分也说得很详细,所以作为关于这方面的内容我本来不想多说,但是大家可能跟我之前一样,在看这方面的内容的时候都能很容易地看懂,但是过几天又忘了,或者在用的程序中跳转较多的情况下容易混淆。

这是因为没有真正的理解,或者是没有很好的方法来记忆,所以在这里我就说一下我对Activity生命周期的一些记忆的方式,希望对大家能够有所帮助。

Activity生命周期的基本内容我就不多说了,网上一搜一大把,官方文档也说得很详细。总之,我们知道Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:

onCreate 、onStart 、onResume 、onPause 、onStop 、onDestroy 、onRestart

下面这张图就是我的记忆的方式:

不难看出,其实这些方法都是两两对应的,onCreate创建与onDestroy销毁;onStart可见与onStop不可见;onResume可编辑(即焦点)与onPause;这6个方法是相对应的,那么就只剩下一个onRestart方法了,这个方法在什么时候调用呢?答案就是:在Activity被onStop后,但是没有被onDestroy,在再次启动此Activity时就调用onRestart(而不再调用onCreate)方法;如果被onDestroy了,则是调用onCreate方法。

这样大家就应该能够很容易的记住这些方法了。下面再通过一个比喻来看两个Activity的切换过程。

我们把Activity比作一本书,我们要看书,首先从书架上取出书(onCreate),然后放到桌上(onStart),接着打开书(onResume),这样我们就可以看书并可以在书本上写字了。

如果这时候我们要启动另一个Activity,也就是要看另一本书,首先我们放下手中的笔或者说合上书(onPause),然后从书架上拿下另一本书(书2:onCreate),然后把书本2放到桌上并打开(书2:onStart、onResume)。

如果书本1被书本2完全盖住了,即不可见了,就调用书本1的onStop;而如果书本2较小,没有完全盖住书本1,则不会调用。

我们还可以把书本1放回书架上,即onDestroy。

另外,还有一点要注意,Activity在处于onPause、onStop、onDestroy状态下,系统都可以销毁该Activity所在进程,所以我们在处理一些要保存的数据时,必须在onPause方法中进行,因为onStop和onDestroy方法不一定会被调用。

OK,就说这么多……

onCreate与onStart区别,onStart与onResume区别相关推荐

  1. HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别(转)

    HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别 文章来源:http://www.cnblogs.com/beatIteWeNerverGiveU ...

  2. Win11和Win10有什么区别 Win11和Win10区别对比

    Win11是微软全新一代操作系统,在界面和功能上和Win10相比还是有不少区别的,如果你还在犹豫要不要升级Win11的话,那么不妨来看看Win11和Win10之间有哪些区别吧. 1. 开始菜单:简单的 ...

  3. 冲突问题和核心对象和原生js 和 jquer的区别的两个区别(固定格式的区别和入口函数的区别)

    jQuery的冲突问题 $有可能其他框架也用 导致两个框架的符号相同出现问题冲突 第一种解决: 释放$的使用权 jQuery.noConflict();//释放$的使用权语句 释放操作必须在编写其他j ...

  4. jQuery的datatable的destroy属性,和$(#test).dataTable().fnDestroy();区别,两者的区别

    jQuery的datatable的destroy属性,和$("#test").dataTable().fnDestroy();区别,两者的区别. 1 destroy属性是,销毁实例 ...

  5. 线程通信和进程通信区别(线程进程区别)

    前言: 腾讯笔试中多道选择题考到这个问题,这里总结一下.学习Java的童鞋可能对于线程的理解要比学php好很多.本文参考于线程通信与进程通信的区别 . 进程和线程的区别: 对于进程来说,子进程是父进程 ...

  6. NOR flash和NAND flash区别,RAM 和ROM区别

    NOR flash和NAND flash区别,RAM 和ROM区别 ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory ...

  7. ML:机器学习模型可解释性之explainability和interpretability区别的简介、区别解读、案例理解之详细攻略

    ML:机器学习模型可解释性之explainability和interpretability区别的简介.区别解读.案例理解之详细攻略 目录 机器学习模型可解释性之explainability和inter ...

  8. Button的custom、system区别 selected、highlighted区别;

    custom.system区别 selected.highlighted区别: (1)UIControlStateHighlighted 多用于初始化 button 时 例如:设置它被按下时的高亮图片 ...

  9. Elasticsearch教程(28) text和keyword区别 term和match区别 ik中文分词器使用

    text和keyword区别 term和match区别 ik中文分词器使用 一.前言 二.之前相关的博客 三.造点测试数据 1. 创建一个index 2. 插入测试数据 四.做一份试卷 第1题:tit ...

最新文章

  1. linux c 执行shell命令并获取返回结果
  2. 也议GetLastKnownLocation!!(独家理解)
  3. 查看php 相关信息
  4. class转java_java动态代理实现与原理详细分析
  5. 全球最大IXP为何选择与华为开展数据中心互联合作?
  6. 垃圾软件!动不动就扣费!| 今日最佳
  7. 请求接口时使用时间戳
  8. 【IDEA】IDEA中使用git将项目上传到码云上
  9. 网站安全之XSS漏洞攻击以及防范措施
  10. HTTP协议工作原理(与HTTPS的区别)
  11. python 变量赋值变成元组
  12. Power Query 系列 (04) - 从 Web 导入数据
  13. JAVA之父,詹姆斯·高斯林传奇人生
  14. 共轭先验分布及其应用
  15. Windows环境下使用UHD PythonAPI开发USRP X310
  16. 计算机系统遗传学,中国象棋计算机博弈系统评估函数自适应遗传算法[转]
  17. Servlet内存马
  18. 《巴黎评论》启示录连载之一村上春树
  19. 开源至上:面试官轮轮虐你?深入剖析
  20. 计算机网络CPT简单应用

热门文章

  1. MAC 常见的终端指令
  2. 2.uCOSIII任务管理
  3. 项目实战 航班飞行网图分析
  4. 解决@Autowired警告
  5. qsort函数的使用
  6. AI人工智能学习之激活函数
  7. 【Java面试】什么是字节码?采用字节码的好处是什么?
  8. oracle clob 查询换行,oracle中Clob字段中的回车换行在jsp中展示的问题
  9. 清东陵的三次大规模盗掘
  10. 干货 | 人工智能如何帮助银行反欺诈:来看看关于银行智能欺诈风险预测模型的研究