Activity的生命周期
2016-01-07 14:33
344 查看
activity启动的时候:onCreate ---> onStart ---> onResume 这个过程不用多说,大家都知道。
1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestroy方法,结束当前Activity。
七个方法中除了onRestart()方法,其他都是俩俩对应的,从而又可以将活动分为三种生存期
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能频繁的在前台进入和出去之间转变。
如图
View Code
现在来观察Activity的生命周期
当点击运行时
1.随后点击进入另一个Activity 先调用了onPause()系统准备调用另一个活动,过几秒调用了onStop的方法
在另一个Activity 重新返回第一个Activity时(finish下)
所以我们看下当我在一个Activity(one)来启动另一个Activity(other)随后finish otherActivity 来显示第一个Activity 然后在finish 第一个Activity的生命周期
2. 点击跳转按钮,由OneActivity跳转到Otherdialog:
由于SecondActivity是Dialog,所以MainActivity依然可见,所以只调用了它的onPause()方法。
当OneActivity重新获取焦点
所以它的生命周期为
1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestroy方法,结束当前Activity。
七个方法中除了onRestart()方法,其他都是俩俩对应的,从而又可以将活动分为三种生存期
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能频繁的在前台进入和出去之间转变。
如图
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/btn_pressed" android:state_pressed="true"></item> <item android:drawable="@drawable/btn_normal"></item> </selector>
View Code
现在来观察Activity的生命周期
当点击运行时
1.随后点击进入另一个Activity 先调用了onPause()系统准备调用另一个活动,过几秒调用了onStop的方法
在另一个Activity 重新返回第一个Activity时(finish下)
所以我们看下当我在一个Activity(one)来启动另一个Activity(other)随后finish otherActivity 来显示第一个Activity 然后在finish 第一个Activity的生命周期
2. 点击跳转按钮,由OneActivity跳转到Otherdialog:
由于SecondActivity是Dialog,所以MainActivity依然可见,所以只调用了它的onPause()方法。
当OneActivity重新获取焦点
所以它的生命周期为
相关文章推荐
- 23.Android之颜色码制表
- MySQL——版本
- 移动AD的计算机到对应的OU的powershell脚本
- Ehcache和MemCached区别及应用
- Block、委托、回调函数原理剖析
- 12306验证码太难,试着用php自己做一个验证码吧!
- struct ethhdr结构体详解
- 线段树 hdu2871 Memory Control
- Android 开发资源
- oracle 开发 第04章 函数
- C++语言一个最简单的写入文件操作
- nginx StubStatus模块
- json
- iOS UI设计: 完美自定义tabbar (不需要额外代码即可按自带的tabbar使用方式)
- SSL 网络安全协议 HTTPS
- Android实现竖着的滑动刻度尺效果,选择身高(竖向的)
- android 自定义Dialog弹出提示框
- 学习Javascript闭包(Closure)
- 欢迎使用CSDN-markdown编辑器
- vimrc 配置