android中Activity的生命周期各回调函数的调用顺序学习心得
来源:互联网 发布:linux 查看登陆的用户 编辑:程序博客网 时间:2024/05/22 10:04
Activity是android里重要组件,主要提供用户界面的,一般每个App都会用到它,牢记activity的生命周期中的各个回调函数的回调顺序是非常必要的。google官方提供的那张图,基本说明了问题,这里也不贴了。尽管之前看了n遍了,但是为了加深印象,自己必须得测试几遍。下面是各个场景测试情况(清单文件未作任何改动):
1、开始一个App时,第一个Activity启动(记作A):onCreate->onStart->onResume,按下BACK键:onPause->onStop->onDestroy。
2、再启动A:onCreate->onStart->onResume,按下HOME键:onPause->onStop。再显示A:onRestart->onStart->onResume。
3、从A跳转到B:A.onPause->B.onCreate->B.onStart->B.onResume->A.onStop。
4、B.finish返回到A:B.onPause->A.onRestart->A.onStart->A.onResume->B.onStop->B.onDestroy。
5、A.finish或按BACK键:onPause->onStop->onDestroy。
上面可以看出:a.任何Activity从onCreate开始到onDestroy结束,且这两个函数只执行一次,其他都可以根据状态反复执行多次。b.任何Acitivity从完全不可见到完全可见,都会回调onStart->onResume。c.任何Activity从完全可见到完全不可见,都会回调onPause->onStop。d.当前Activity将要变为不可见(跳转或finish后)先只是onPause,等另一个完全覆盖(当前Activity完全不可见),再onStop(若finish则还会onDestroy)。 e.默认情况下finish()等同于按BACK键。
6、A已启动,旋转屏幕竖->横:onPause->onStop->onDestroy,onCreate->onStart->onResume。
7、再旋转屏幕横->竖:onPause->onStop->onDestroy,onCreate->onStart->onResume。
上面可以看出:屏幕旋转时,不管竖->横还是横->竖,Activity都会先完成当前生命周期onPause->onStop->onDestroy,再重新开始一个生命周期onCreate->onStart->onResume。之前听人说横竖切换不一样,本人测试时都一样,不知道是否跟版本有关。
8、A已启动,点击一个按钮,弹出对话框(Dialog),A部分可见,再关闭对话框:不会回调任何函数。
9、清单中改B的theme="@android:style/theme.Dialog"。A已启动,A跳转到B,A部分可见:A.onPause->B.onCreate->B.onStart->B.onResume。
10、再B.finish返回到A:A.onResume->B.onStop->B.onDestroy。
11、代码中改B的setTheme(android.R.style.Theme_Dialog),A已启动,A跳转到B,B的外观跟9一样,但A完全不可见:回调过程跟3一样。
12、再B.finish返回到A:回调过程跟4一样。
上面可以看出:a.若弹出Dialog时,虽然Activity部分可见,但也不回调任何函数。b.清单中修改Activity.theme为Dialog,当跳转到此Activity时,前一个Activiy部分可见,不会回调onStop,返回后只回调onResume。c.代码中修改Activity.theme为Dialog,当跳转到此Activity时,虽然外观为Dialog,但前一个Activiy完全不可见,回调跟非Dialog主题的一样。d.跳转前的Activity,跳转后,若部分可见只执行onPause,不执行onStop,返回后不执行onRestart和onStart,只执行onResume。e.系统Dialog是弹出,非Activity跳转,所以不回调任何函数。
以上都是实际测试后,得出的结论。
- android中Activity的生命周期各回调函数的调用顺序学习心得
- Android 两个Activity切换时回调函数调用顺序
- Android中Activity生命周期,函数调用顺序
- Android中Fragment的生命周期各状态和回调函数使用
- Android的Animation的onAnimationXXX/onAnimationXXX和Listener.onXXX回调函数调用顺序
- android 不同activity切换时它们的回调函数调用逻辑的研究
- Activity生命周期被调用的顺序
- 面试问题 activity生命周期,当设备旋转时android生命周期方法的调用顺序
- Android中回调函数的使用
- Android的Fragment的生命周期各状态和回调函数使用
- Android的Fragment的生命周期各状态和回调函数使用
- Android的Fragment的生命周期各状态和回调函数使用
- Android的Fragment的生命周期各状态和回调函数使用
- Android的Fragment的生命周期各状态和回调函数使用
- Android Activity 的生命周期流程顺序
- 对生命周期回调函数的认识————starting an activity
- UITableView回调函数的执行顺序
- Android中Activity的生命周期
- C盘空间不足?手动清理Win8.1更新冗余
- Zend Studio For Eclipse 6.1.2 汉化 注册 英文版转化为中文版
- mysql 一张表update另一张表
- [CF 329E]Evil题解翻译
- layoutinflater详解
- android中Activity的生命周期各回调函数的调用顺序学习心得
- pushState()、popstate事件配合ajax实现浏览器前进后退页面局部刷新
- DaVinci 开发文档博客记录
- tomcat配置
- C++的字符串分割函数
- 1连接数据库
- Android 对话框弹出位置和透明度的设置
- 第二届SDN大赛--必答题1
- mysql修改密码