Activity生命周期总结
2014-01-02 19:36
302 查看
Activity生命周期中的回调比任何一种页面(如jsp,winfrom等)都多。在Activity进入用户可以交互阶段实际上已经经历了onCreate()、onStart()、onResume()的回调。
先来看android官方文档中对于Activity生命周期各状态回调函数的流程。
Activity的生命周期及回调方法
此流程图需要特别注意的是两个”The activity comes to the foreground”标签,其中onResume()与onPause()之间的标签表示另外一个activity在最前面,但是该activity仍然可见,如最前面的activity的Them配置为android:theme="@android:style/Theme.Dialog"的情况。onStart()与onStop()之间的标签表示该activity完全被最前面的activity覆盖。
根据Activity的可见性重新画activity的生命周期及回调如下。
现通过程序验证此过程。
如下图是MainActivity,其中的所有回调函数都已打印日志,此程序有两个菜单选项,菜单one对应的OneActivity的Theme为默认值,在选择one时OneActivity将完全覆盖MainActivity,two是一个Theme配置为android:theme="@ android:style/Theme.Dialog"的activity,选择two时,TwoActivity在最上面,但是MainActivity仍可见。
Logcat打印日志如下:
选择two,弹出dialog的activity,MainActivity仍然可见
此时打印的日志如下
可以看到此时调用的是onPause()方法,失去焦点。
关闭two,可以看到调用了onResume()方法,得到焦点。处于onResume()与onPause()间的”The
activitycomes to the foreground”
选择one,弹出OneActivity,完全覆盖MainActivity
打印的日志如下
可以看出此时属于onStart()、onStop()间的”The activitycomes to the foreground”。
退出OneActivity,继续显示MainActivity,调用MainActivity的onReStart()、onStart()方法。
退出程序,调用onDestroy()方法.
源码连接
先来看android官方文档中对于Activity生命周期各状态回调函数的流程。
Activity的生命周期及回调方法
此流程图需要特别注意的是两个”The activity comes to the foreground”标签,其中onResume()与onPause()之间的标签表示另外一个activity在最前面,但是该activity仍然可见,如最前面的activity的Them配置为android:theme="@android:style/Theme.Dialog"的情况。onStart()与onStop()之间的标签表示该activity完全被最前面的activity覆盖。
根据Activity的可见性重新画activity的生命周期及回调如下。
现通过程序验证此过程。
如下图是MainActivity,其中的所有回调函数都已打印日志,此程序有两个菜单选项,菜单one对应的OneActivity的Theme为默认值,在选择one时OneActivity将完全覆盖MainActivity,two是一个Theme配置为android:theme="@ android:style/Theme.Dialog"的activity,选择two时,TwoActivity在最上面,但是MainActivity仍可见。
Logcat打印日志如下:
选择two,弹出dialog的activity,MainActivity仍然可见
此时打印的日志如下
可以看到此时调用的是onPause()方法,失去焦点。
关闭two,可以看到调用了onResume()方法,得到焦点。处于onResume()与onPause()间的”The
activitycomes to the foreground”
选择one,弹出OneActivity,完全覆盖MainActivity
打印的日志如下
可以看出此时属于onStart()、onStop()间的”The activitycomes to the foreground”。
退出OneActivity,继续显示MainActivity,调用MainActivity的onReStart()、onStart()方法。
退出程序,调用onDestroy()方法.
源码连接
相关文章推荐
- 左旋字符串
- MySQL 添加列,修改列,删除列
- TheBrain_windows_7_0_4_5+crack 安装记录
- A Comparison of the OSI and TCP/IP Reference Models
- xunsearch 迅搜初探
- 分析kernel的initcall函数
- 用SSH连接SSH连接nitrous.io
- shoelace源代码分析,bochs调试 readkernel()函数
- 串匹配算法KMP详解
- bubbleSort
- Vector介绍
- UltraGrid单元格放多个图片
- BeautyEye主题使用中BETitlePane的标题栏图标按钮个性修改
- SharePoint 2013 自定义翻页显示列表项
- C++ arraylist实现
- Linq学习__05__查询表达式和方法查询比较
- uva 755 - 487--3279
- amazon s3 的用户验证 access-key, secrete-key
- windows远程连接Linux的两个小工具
- Android中SQLiite的replace、update、insert以及表级和字段级冲突解决