Android开发系列二之窗口Activity的生命周期
在上篇文章给大家介绍了,感兴趣的朋友可以点击阅读详情。
在activity从创建到销毁的过程中需要在不同的阶段调用7个生命周期的方法这7个生命周期方法定义如下:
protected void oncreate(bundle savedinstancestate) protected void onstart() protected void onresume() protected void onpause() protected void onstop() protected void onrestart() protected void ondestroy()
上面7个生命周期方法分别在4个阶段按一定的顺序进行调用
1,开始activity:在这个阶段依次执行3个生命周期方法,分别是oncreate,onstart,onresume
2,activity失去焦点:如果在activity获得焦点的情况下进入其他的activity或者应用程序,当前的activity会失去焦点,这一阶段会依次执行onpause,onstop方法
3,activity重新获得焦点:这时会依次执行onrestart,onstart,onresume方法
4,关闭activity:当activity被关闭时系统会依次执行3个生命周期方法,分别是onpause,onstop,ondestory
如果这4个阶段执行生命周期方法的过程中不发生状态的改变,系统会按照上面的顺序依次执行4个阶段的生命周期方法,如果在执行过程中改变了状态,系统会按照更复杂的方法调用生命周期方法
如果在执行onstop方法的过程中activity重新获得焦点,然后又失去了焦点,系统将不会执行ondestory方法,而是按照下面顺序执行生命周期方法
onstop->onrestart->onstart->onresume->onpause->onstop
下图描述了activity从创建到销毁以及中间状态的改变后调用生命周期方法的过程
从上图所示的activity生命周期调用方法示意图不难看出,在整个activity的生命周期中包含两层循环,第一层循环是onpause->onresume->onpause,第二层循环onstop->onrestart->onstart->onresume->onpause->onstop。我们可以将这两层循环看成是整个activity生命周期中的子生命周期。
第一层循环称为焦点生命周期,第二层循环称为可视生命周期,也就是说,第一层循环再activity焦点的获得与失去的过程中循环,在这一过程中,activity始终是可见的,第二层循环是在activity可见与不可见的过程中循环,在这个过程中伴随着activity焦点的获得与失去,也就是说,activity首先会被显示,然后会获得焦点,接着失去焦点,最后由于弹出其他的activity使当前的activity变成不可见。
因此,activity有如下3种生命周期:
1.整体生命周期:oncreate->....->ondestroy
2.可视生命周期:onstart->....->onstop
3.焦点生命周期:onresume->....->onpause
下面代码分别在activity类中7个生命周期方法中输出日志信息
package com.neil.ad02; import android.app.activity; import android.os.bundle; import android.util.log; public class mainactivity extends activity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); log.d("oncreate","oncreate method is executed"); setcontentview(r.layout.activity_main); } @override protected void ondestroy() { super.ondestroy(); log.d("ondestroy","ondestroy method is executed"); } @override protected void onpause() { super.onpause(); log.d("onpause","onpause method is executed"); } @override protected void onrestart() { super.onrestart(); log.d("onrestart","onrestart method is executed"); } @override protected void onresume() { super.onresume(); log.d("onresume","onresume method is executed"); } @override protected void onstart() { super.onstart(); log.d("onstart","onstart method is executed"); } @override protected void onstop() { super.onstop(); log.d("onstop","onstop method is executed"); } }
打开android device monitor观察
图中红框里是重新获得焦点,其他的你们可以一一尝试
以上内容是小编给大家介绍的android学习系列二之窗口activity的生命周期,希望对大家以上帮助!
上一篇: codeblocks单步调试
下一篇: MySQL中BETWEEN子句的用法详解
推荐阅读
-
Android开发系列二之窗口Activity的生命周期
-
Android开发笔记之Android中数据的存储方式(二)
-
Android编程开发之TextView单击链接弹出Activity的方法
-
深入解读Android开发中Activity的生命周期
-
Android开发笔记之Android中数据的存储方式(二)
-
Android编程开发之TextView单击链接弹出Activity的方法
-
深入解读Android开发中Activity的生命周期
-
Android开发之图形图像与动画(二)Animation实现图像的渐变/缩放/位移/旋转
-
解析Android开发优化之:对界面UI的优化详解(二)
-
Android开发之图形图像与动画(二)Animation实现图像的渐变/缩放/位移/旋转