废话不多说, 先来一张Google提供的一张经典的生命周期流程图:

有的朋友可能看英文的有点费劲,再提供一张中文版的  O(∩_∩)O

相信已经很多人对这张图再熟悉不过了,下面笔者按照自己的理解并结合写的demo解释一下activity的生命周期,

有不足之处还望同行指正.

  1. Activity的生命周期主要有以下六种
  • onCreate():  当 activity 组件的实例创建的时候会被调用
  • onStart():  在activity组件看得见的时候被调用
  • onResume(): 在activity组件获得焦点的时候被调用
  • onPause():  在activity组件失去焦点的时候被调用
  • onStop():  在activity组件看不见的时候调用
  • onDestory(): 当 activity 组件销毁的时候被调用

以下是我新建的一个小demo,代码如下:

 public class MainActivity extends Activity {

     //一般用来做控件的 初始化
//创建的时候调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("onCreate 执行 ");
} // 看得见的时候调用
@Override
protected void onStart() {
System.out.println("onstart 执行");
super.onStart();
} //获得焦点的 时候 调用
// 如:继续游戏
@Override
protected void onResume() {
super.onResume();
System.out.println("onResume 执行");
} //失去 焦点
//如:暂停 游戏
@Override
protected void onPause() {
super.onPause();
System.out.println("onPause执行 ");
} //看不见的时候调用
@Override
protected void onStop() {
System.out.println("onstop 执行");
super.onStop();
} //销毁的时候 调用
@Override
protected void onDestroy() {
super.onDestroy();
System.out.println("onDestroy 执行 ");
} }

在每个方法里都加了一句输出语句,用于在控制台观察执行的效果

2. 下面启动模拟器开始测试:

 1) 启动Activity:

在系统调用了onCreate和onStart之后,调用了onResume,自此,Activity进入了运行状态。

2) 跳转到其他Activity,或按下Home键回到主屏:

在这里我们可以看到,这时activity没有真正退出,而是在后台运行.

相继调用了onPause()和onStop(),先失去了焦点,然后看不见

3) 从后台回到前台:

当从后台会到前台时,系统先调用onStart方法,最后调用onResume方法,Activity又进入了运行状态。

在这个过程中,activity先看得见,再到获得焦点

4) 在这个activity上再覆盖一个透明的应用

下面再做一个实验,新建一个test应用,在清单文件中的aplication节点加如下代码:

android:theme="@android:style/Theme.Translucent"

将test改为透明背景,覆盖在activity的上面,效果如下:

这时,控制台打印了如下内容:

可以看出, 在程序被另一个程序覆盖后失去了焦点,但还可以看得到,

所以只是执行了onPause方法

5) 按回退键,退出test,让之前的activity重新获得焦点

这时,onResume方法执行

6) 退出

最后onDestory方法被调用,标志着LifeCycleActivity的终结。

好了,大体上就说这些,这时再回头看第一张图,是否理解更深一点了呢?

Android四大组件之---activity生命周期详解的更多相关文章

  1. Android 四大组件之Activity生命周期

    写这篇博文之前,已经对android有一定的了解和认识.这篇博文主要讲述android的Activity的生命周期,这是android开发者必须掌握的知识.android的Activity组件拥有7个 ...

  2. 深入剖析Android四大组件(一)——Activity生命周期具体解释

    1.管理Activity的生命周期 不管是正在执行的Activity还是没有执行的Activity,它们都接受Android的框架管理,这使得Activity处于不同的生命周期. ①Activity的 ...

  3. Android学习笔记:Activity生命周期详解

    进行android的开发,必须深入了解Activity的生命周期.而对这个讲述最权威.最好的莫过于google的开发文档了. 本文的讲述主要是对 http://developer.android.co ...

  4. 四大组件之Activity——生命周期

    1.完整的Activity生命周期 包括onCreate() -> onStart() -> onResume() -> onPause() -> onStop -> o ...

  5. Android关于Activity生命周期详解

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

  6. Android Activity 生命周期详解

    学习android开发这么久对于activity的生命周期还没有仔细思考过,所以,我大致的把这些东西整理一下,希望通过这使自己理解的更透彻点吧! 首先看一下Activity生命周期图和它的的四个阶段 ...

  7. xamarin Android activity生命周期详解

    学Xamarin我为什么要写这样一篇关于Android 的activity生命周期的文章 已经学Xamarin android有一段时间了,现在想起当初Xamarin也走了不少的弯路.当然Xamari ...

  8. Android之Activity生命周期详解

    Activity的生命周期方法: onCreate()--->onStart()--->onResume()--->onPause()--->onStop()--->on ...

  9. 【转】Activity生命周期详解

    三个循环 提供两个关于Activity的生命周期模型图示帮助理解:                                           图1 图2 从图2所示的Activity生命周期 ...

随机推荐

  1. keras model.compile(loss='目标函数 ', optimizer='adam', metrics=['accuracy'])

    深度学习笔记 目标函数的总结与整理   目标函数,或称损失函数,是网络中的性能函数,也是编译一个模型必须的两个参数之一.由于损失函数种类众多,下面以keras官网手册的为例. 在官方keras.io里 ...

  2. 用jquery制作一个二级导航下拉菜单

    1使用$(function(){...})获取到想要作用的HTML元素. 2通过使用children()方法寻找子元素.       3通过使用show()方法来显示HTML元素.       4通过 ...

  3. web-day11

    第11章WEB11-Cookie&Session篇 今日任务 显示用户的上次访问时间 登录系统以后显示商品浏览记录 购买商品将商品添加到购物车 系统登录的验证码的校验 教学导航 教学目标 了解 ...

  4. 冲刺博客NO.5

    今天做了什么:布局UI和效果图,学会了监听事件并销毁监听接口 SMSSDK.unregisterAllEventHandler(); 今天做的东西不多,没有遇到什么苦难

  5. SRM466

    250pt: 给出一个数n(n <= 10^10),问至少修改几位能使其变成完全平方数. 思路:     直接枚举平方根,然后统计.     注意枚举时要枚举到比她大.. #line 7 &qu ...

  6. file新建文件及文件夹

    1.获取包名的根目录:mRootPath = getFilesDir().getParent(); // ====mRootPath===/data/data/com.yoyu.file  获取SD卡 ...

  7. Python自动化开发 - 装饰器

    本节内容 一.装饰器导引 1.函数对象特性 2.扩展业务功能需求 3.各种解决方案 二.装饰器解析 1.装饰器基本概念 2.无参装饰器解析 一.装饰器导引 1.函数对象特性 #### 第一波 #### ...

  8. 运行批处理文件怎么不显示DOS命令窗口

    运行批处理文件怎么不显示DOS命令窗口   BAT没法不显示DOS窗口.你可以考虑用脚本保持以下到文本文件,重命名为AutoUp_ddyy.vbs set WshShell = WScript.Cre ...

  9. Visual Studio Code 显示隐藏的.git文件和目录

    在默认设置中,Visual Studio Code 将下列文件文件排除在显示列表中: "files.exclude": { "**/.git": true, & ...

  10. JS学习笔记2_面向对象

    1.对象的定义 ECMAScript中,对象是一个无序属性集,这里的“属性”可以是基本值.对象或者函数 2.数据属性与访问器属性 数据属性即有值的属性,可以设置属性只读.不可删除.不可枚举等等 访问器 ...