联系方式:[email protected]
[android四大组件学习系列activity篇]
上一篇文章讲了activity的定义、状态和后退栈,现在讲讲activity的重点和难点——activity的生命周期。
activity生命周期的回调方法:


这些方法定义了activity完整的生命周期,实现这些方法,我们能监控activity生命周期中的三个嵌套循环(monitor three nested loops in the activity lifecycle)
1.activity的entire lifetime(全部的生命期)发生在
调用oncreate()和调用ondestory()之间。
在oncreate()方法中执行全局状态的建立(例如定义布局),在ondestroy()方法中释放所有保存的资源。
2.activity的visible lifetime(可见的生命期)发生在
调用onstart()和onstop()之间。
在这个期间,用户能在屏幕上看见activity,和它进行交互。
系统在activity的完整寿命中可能多次调用onstart()和onstop(),正如activity交替地对用户可见或隐藏。
3activity的foreground lifetime (前台的生命期)发生在
调用onresume()和onpause()之间。
在这期间,activity在屏幕上所有其他activity的前面,有用户输入焦点。
一个activity能频繁的在前台进入和出去之间转变。
下面这张图很好的讲解了activity的生命周期和上面说的三种生命期:
下面通过一个demo来学习以下activity的生命周期:
demo很简单,就只有两个activity,mainactivity和secondactivity和一个按钮。点击按钮,由mainactivity跳转到secondactivity。
mainactivity:


secondactivity:
secondactivity
使用activity需要在manifest.xml文件中注册:
manifest.xml
1. 运行应用,mainactivity运行。
可以看出一个activity运行调用的回调方法是:oncreate()->onstart()->onresume()
2. 点击跳转按钮,由mainactivity跳转到secondactivity:
1>secondactivity是dialog。
由于secondactivity是dialog,所以mainactivity依然可见,所以只调用了它的onpause()方法。
2>若将secondactivity改为不是dialog(只需在manifest.xml文件中删掉 android:theme="@android:style/theme.dialog"这一行即可)
再点击跳转按钮:
对于mainactivity,由于不可见,状态由运行变为停止。
依次调用了它的回调方法:onpause()->onstop()
3.activity处于运行状态时,点击返回按钮。
点击返回按钮,activity由运行状态变为死亡状态,依次调用它的回调方法:onpause()->onstop()->ondestroy()
4.activity处于运行状态,点击主页按钮,返回桌面。
activity由运行状态变为停止状态,依次调用它的回调方法:onpause()->onstop()
5.activity处于停止状态,即由桌面返回到activity。
停止->运行,依次调用回调方法:onrestart()->onstart()->onresume()
6.activity处于运行状态,旋转屏幕:
可以看出,旋转屏幕是一个销毁activity然后重新创建activity的过程。
运行->暂停->停止->死亡->运行
依次调用回调方法:onpause()->onstop->ondestroy()->oncreate()->onstart()->onresume()
7.activity处于运行状态,手机此时锁屏。
可以看出,手机锁屏,此时由于activity不可见,会进入停止状态。
依次调用回调方法:onpause()->onstop()
8.当应用正在运行时,手机锁屏,然后解锁回到应用界面。
可以看出应用从停止状态恢复到运行状态。
依次调用回调方法:onrestart()->onstart()->onresume()
本人邮箱:[email protected],欢迎交流讨论。
如果喜欢,请点推荐!谢谢~