下面这张图详细的描述了Activity的整个生命周期:

直接上代码,注意看注释:

[java] view
plain
copy

  1. public class HelloActivity extends Activity {
  2. public static final String TAG = "HelloActivity";
  3. /**
  4. * 第一个被运行的方法
  5. * 初始化页面
  6. * Bundle恢复上次的状态
  7. */
  8. @Override
  9. public void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.main);
  12. Log.v(TAG, "onCreate");
  13. }
  14. /**
  15. * 从onStop回到Activity的时候会执行
  16. * 按HOME键的时候会执行onStop,重新回到程序会执行这个方法
  17. */
  18. @Override
  19. protected void onRestart() {
  20. super.onRestart();
  21. Log.v(TAG, "onRestart");
  22. }
  23. /**
  24. * 在onCreate,onRestart后面执行
  25. */
  26. @Override
  27. protected void onStart() {
  28. super.onStart();
  29. Log.v(TAG, "onStart");
  30. }
  31. /**
  32. * 在onStart后面执行,执行这个方法后这个Activity就处于全部Activity堆栈的最上面
  33. * 进入用户可见可操作的状态
  34. */
  35. @Override
  36. protected void onResume() {
  37. super.onResume();
  38. Log.v(TAG, "onResume");
  39. }
  40. /**
  41. * 当其他Activity启动时这个方法会执行
  42. * 按HOME和BACK都会执行这个方法
  43. * 最好在这个方法中提交或者保存数据,因为很有可能再也不会回到这个activity中。
  44. * 这个方法最好不要执行太长时间,因为下个activity开始执行前会等待这个方法返回。
  45. */
  46. @Override
  47. protected void onPause() {
  48. super.onPause();
  49. Log.v(TAG, "onPause");
  50. }
  51. /**
  52. * activity很久没被显示,要被销毁,系统资源缺乏,都会调用这个方法
  53. * 按HOME和BACK都会执行这个方法
  54. */
  55. @Override
  56. protected void onStop() {
  57. super.onStop();
  58. Log.v(TAG, "onStop");
  59. }
  60. /**
  61. * 调用finish方法,或者系统回收资源时调用
  62. */
  63. @Override
  64. protected void onDestroy() {
  65. super.onDestroy();
  66. Log.v(TAG, "onDestroy");
  67. }
  68. }


 
PS:
  • HOME键的执行顺序:onPause->onStop->onRestart->onStart->onResume
  • BACK键的顺序: onPause->onStop->onDestroy->onCreate->onStart->onResume
  • onPause不要做太耗时的工作

Activity的生命周期,BACK键和HOME对生命周期的影响的更多相关文章

  1. Fragment生命周期及在viewpager中的生命周期

    简介 本篇博客主要从一下三个方面介绍fragement的生命周期 1.fragment的生命周期及与Activity的生命周期的比较 2.FrameLayou布局添加.替换Fragment时fragm ...

  2. asp.net应用程序生命周期和asp.net网页的生命周期

    一.asp.net应用程序生命周期 asp.net应用程序生命周期以浏览器向web服务器(比如IIS服务器)发送请求为起点,先后经历web服务器下的ISAPI(Internet Server Appl ...

  3. Asp.Net复习篇之Asp.Net生命周期与Asp.Net页的生命周期

    Asp.Net生命周期与Asp.Net页的生命周期是一个比较重要的话题,有时可能似乎知道一些,但又说不出个所以然,而且时常把这两个概念混淆.现在也是该好好理清思路,把这两个概念搞懂. Asp.Net生 ...

  4. ASP.NET页面生命周期和asp.net应用程序生命周期

    作为一个asp.net程序员,不了解ASP.NET页面生命周期和asp.net应用程序生命周期是绝对不行的,那永远只能是菜鸟级别.我很早就学过,可是没次还是得去翻,一些事件还是记不住,还是记在自己的b ...

  5. vue生命周期图示中英文版Vue实例生命周期钩子

    vue生命周期图示中英文版Vue实例生命周期钩子知乎上近日有人发起了一个 “react 是不是比 vue 牛皮,为什么?” 的问题,Vue.js 作者尤雨溪12月4日正面回应了该问题.以下是尤雨溪回复 ...

  6. (5)连续非周期信号的傅里叶变换(频谱) & 周期信号的傅里叶变换

    参考资料:<信号与系统(第二版)> 杨晓非 何丰 从傅里叶级数到傅里叶变换 通过分析连续周期信号的周期与频谱的关系,当周期趋于无穷大的时候,周期信号变成非周期信号.从频谱分析观点来看,当T ...

  7. 《深入Java虚拟机学习笔记》- 第7章 类型的生命周期/对象在JVM中的生命周期

    一.类型生命周期的开始 如图所示 初始化时机 所有Java虚拟机实现必须在每个类或接口首次主动使用时初始化: 以下几种情形符合主动使用的要求: 当创建某个类的新实例时(或者通过在字节码中执行new指令 ...

  8. JSP和selevt 生命周期详解(JSP的生命周期和select很像,jsp底层就是一个selevt)

    JSP: JSP的生命周期指从创建到销毁的整个过程.分为以下几个阶段: 1:编译阶段:servlet引擎编译servlet源文件,生成servlet类.当浏览器请求JSP页面时,JSP引擎会首先去检查 ...

  9. Salesforce 生命周期管理(一)应用生命周期浅谈

    本篇参考: https://trailhead.salesforce.com/en/content/learn/trails/determine-which-application-lifecycle ...

随机推荐

  1. image_Magic

    http://www.charry.org/docs/linux/ImageMagick/ImageMagick.html mogrify -sample 25% *.jpg  批量处理图片 conv ...

  2. Linux基础——centos 跳过管理员密码进行登录(单用户模式、救援模式)

    这里列举了两种更改或者取消管理员密码登录Linux系统的方法,其实两种方法类似,都是想方设法跳过用户认定,直接更改用户文件.更改密码的过程. 为了跳过系统正常启动过程中的某些步骤,必须知道大致的系统启 ...

  3. 简单的menu和点击(包括alertDialog定制)

    import android.app.Activity;import android.app.AlertDialog;import android.app.Dialog;import android. ...

  4. Phpstorm 换行设置(复制 http://jingyan.baidu.com/article/86fae346b2cb673c49121ad3.html)

    很多时候代码太长超出了屏幕的宽度,默认情况下没有自动换行的,我们需要把光标往后挪,才能看到后面代码,显得略为蛋疼,我个人比较喜欢能够自动换行. 下面就说下Phpstorm里如何默认开启自动换行(use ...

  5. Python Tornado框架三(源码结构)

    Tornado 是由 Facebook 开源的一个服务器“套装”,适合于做 python 的 web 或者使用其本身提供的可扩展的功能,完成了不完整的 wsgi 协议,可用于做快速的 web 开发,封 ...

  6. NoSQL2

    系统的可扩展性是推动NoSQL运动发展的的主要理由,包含了分布式系统协调,故障转移,资源管理和许多其他特性.这么讲使得NoSQL听起来像是一个大筐,什么都能塞进去.尽管NoSQL运动并没有给分布式数据 ...

  7. 属性检测 In,hasOwnPreperty()和propertyIsEnumerable()

    IN  左侧是属性名:右侧是对象名, 如果 属性是 自有属性 或者继承属性 则返回 TRUE var o={x:1,y:2} "x" in  o    返回 true: hasOw ...

  8. H5新特性---新应用

    1.持久化本地存储 可以不通过第三方插件实现数据的本地存储 2.WebSocket 页面之间可以双向通信 3.服务器推送事件(SSE) 从Web服务器将消息推送给浏览器(在手机中常见) 例如: < ...

  9. mysql 5.7快速部署

    目录 一:官网下载mysql二级制包.... 1 二:mysql二级制包解压.... 1 三:设置mysql库文件路径与授权... 1 四. 创建配置文件... 2 五:数据库初始化... 5 六: ...

  10. 当root用户无密码,非超级权限用户时提示mysqladmin: Can't turn off logging; error: 'Access denied; you need the SUPER privilege for this op解决方案

    问题: 在centOS上安装了mysql后,卸载了又重新安装,使用mysqladmin -u root password 'new password' 更改密码,提示: mysqladmin: Can ...