• Android四大组件之---activity生命周期详解


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

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

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

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

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

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

     1 public class MainActivity extends Activity {
     2 
     3     //一般用来做控件的 初始化 
     4     //创建的时候调用 
     5     @Override
     6     protected void onCreate(Bundle savedInstanceState) {
     7         super.onCreate(savedInstanceState);
     8         setContentView(R.layout.activity_main);
     9         System.out.println("onCreate 执行  ");
    10     }
    11 
    12     // 看得见的时候调用 
    13     @Override
    14     protected void onStart() {
    15         System.out.println("onstart 执行");
    16         super.onStart();
    17     }
    18     
    19     //获得焦点的 时候 调用 
    20     // 如:继续游戏 
    21     @Override
    22     protected void onResume() {
    23         super.onResume();
    24         System.out.println("onResume 执行");
    25     }
    26     
    27     //失去 焦点 
    28     //如:暂停 游戏 
    29     @Override
    30     protected void onPause() {
    31         super.onPause();
    32         System.out.println("onPause执行 ");
    33     }
    34     
    35     
    36     //看不见的时候调用 
    37     @Override
    38     protected void onStop() {
    39         System.out.println("onstop 执行");
    40         super.onStop();
    41     }
    42     
    43     //销毁的时候 调用 
    44     @Override
    45     protected void onDestroy() {
    46         super.onDestroy();
    47         System.out.println("onDestroy 执行  ");
    48     }
    49 
    50 }

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

    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的终结。

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

  • 相关阅读:
    函数式编程之moand的作用
    函数式编程之构建--待完成
    函数式编程中的组合子
    函数式编程中的函数—函数式编程的多态
    swift函数式编程之compose
    swift的柯里化demo
    trait Monad:函数式编程类型系统本博客搜索关键字--类型升降
    函数式编程的三个核心问题:计算的构建、求值、关系
    金融危机是现有金融体制的重构和资产价格的重估
    代理模式:稳定的代理,可变的实现(替换)
  • 原文地址:https://www.cnblogs.com/wanghaoyuhappy/p/5291798.html
Copyright © 2020-2023  润新知