Android四大组件之---activity生命周期详解
废话不多说, 先来一张Google提供的一张经典的生命周期流程图:

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

相信已经很多人对这张图再熟悉不过了,下面笔者按照自己的理解并结合写的demo解释一下activity的生命周期,
有不足之处还望同行指正.
- 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生命周期详解的更多相关文章
- Android 四大组件之Activity生命周期
写这篇博文之前,已经对android有一定的了解和认识.这篇博文主要讲述android的Activity的生命周期,这是android开发者必须掌握的知识.android的Activity组件拥有7个 ...
- 深入剖析Android四大组件(一)——Activity生命周期具体解释
1.管理Activity的生命周期 不管是正在执行的Activity还是没有执行的Activity,它们都接受Android的框架管理,这使得Activity处于不同的生命周期. ①Activity的 ...
- Android学习笔记:Activity生命周期详解
进行android的开发,必须深入了解Activity的生命周期.而对这个讲述最权威.最好的莫过于google的开发文档了. 本文的讲述主要是对 http://developer.android.co ...
- 四大组件之Activity——生命周期
1.完整的Activity生命周期 包括onCreate() -> onStart() -> onResume() -> onPause() -> onStop -> o ...
- Android关于Activity生命周期详解
子曰:溫故而知新,可以為師矣.<論語> 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精 ...
- Android Activity 生命周期详解
学习android开发这么久对于activity的生命周期还没有仔细思考过,所以,我大致的把这些东西整理一下,希望通过这使自己理解的更透彻点吧! 首先看一下Activity生命周期图和它的的四个阶段 ...
- xamarin Android activity生命周期详解
学Xamarin我为什么要写这样一篇关于Android 的activity生命周期的文章 已经学Xamarin android有一段时间了,现在想起当初Xamarin也走了不少的弯路.当然Xamari ...
- Android之Activity生命周期详解
Activity的生命周期方法: onCreate()--->onStart()--->onResume()--->onPause()--->onStop()--->on ...
- 【转】Activity生命周期详解
三个循环 提供两个关于Activity的生命周期模型图示帮助理解: 图1 图2 从图2所示的Activity生命周期 ...
随机推荐
- 小论文matlab作图技巧
小论文matlab作图技巧 编辑->复制选项 编辑->图形属性 图中右击->字型 编辑->复制图片,即可. 效果: 宽:5.9高: 7.91
- MIT Molecular Biology 笔记7 调控RNA
视频 https://www.bilibili.com/video/av7973580/ 教材 Molecular biology of the gene 7th edition J.D. Wat ...
- Ng第三课:线性代数回顾(Linear Algebra Review)
3.1 矩阵和向量 3.2 加法和标量乘法 3.3 矩阵向量乘法 3.4 矩阵乘法 3.5 矩阵乘法的性质 3.6 逆.转置 3.1 矩阵和向量 如图:这个是 4×2 矩阵,即 4 行 ...
- Alpha阶段敏捷冲刺(五)
1.站立式会议 提供当天站立式会议照片一张 2.每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 昨天已完成的工作. 祁泽文:实现了个人遗忘曲线图 徐璐琳:完成了微信Web ...
- 如何打包maven项目
start 步骤1:项目右键-->Run As-->Maven clean 步骤2:Run As-->Maven install end
- eclipse/sublime 等宽字体设置
转载请注明出处:http://www.cnblogs.com/wubdut/p/4621889.html 使用ubuntu14.04会产生很多想日犬的地方.大家一般习惯于使用 eclipse 进行 j ...
- noip第11课资料
- 第82讲:Scala中List的ListBuffer是如何实现高效的遍历计算的?
今天学习下list中的ListBuffer实现的高效计算.让我们先来看下代码 def main(args:Array[String]){ val list = List(1,2,3,4, ...
- 第74讲:从Spark源码的角度思考Scala中的模式匹配
今天跟随王老师学习了从源码角度去分析scala中的模式匹配的功能.让我们看看源码中的这一段模式匹配: 从代码中我们可以看到,case RegisterWorker(id,workerHost,.... ...
- HTML给table添加单线边框
一般来说,给表格加边框都会出现不同的问题,以下是给表格加边框后展现比较好的方式 <style> table,table tr th, table tr td { border:1px so ...