Android多个Activity切换时其生命周期中的方法执行顺序
2013-04-23 15:14
549 查看
学习Android知识的时候突然想到一个问题,在这里使用了突然这个词,因为之前就已经了解过Android的生命周期,相信大家也都对其了如指掌,但在这里说的是多个Activity切换时的生命周期中的方法执行顺序。大家知道Android生命周期包括以下几个状态:
onCreate(Bundle savedInstanceState):可以进行一些初始化的工作在activity第一次被创建的时候调用。这里是你做所有初始化设置的地方──创建视图、绑定数据至列表等
onStart():Activity显示在前台,但还不可与用户交互
onRestart():在activity停止后,在再次启动之前被调用。
onResume():取得控制权,可以对此Activity进行操作此时activity位于堆栈顶部,并接受用户输入。
onPause():暂停,可见,但不可操作,此方法主要用来将未保存的变化进行持久化,停止类似动画这样耗费CPU的动作等
onStop():当activity不再为用户可见时调用此方法
onDestroy():在activity销毁时调用
Android的Activity是堆栈结构,对于上面的这些方法大家应该知道其执行顺序,但大家有没有想过多个Activity切换时,其执行顺序?一个Activity执行完再执行另一个,还是交叉执行?
实践是检验真理的唯一标准。
新建工程,创建两个Activity,从一个Activity通过Intent切换到另一个Activity:
[java] view
plaincopy
08-25 05:02:47.783: INFO/System.out(339): MainActivity------->onPause()
08-25 05:02:47.843: INFO/System.out(339): Another------->onCreate()
08-25 05:02:47.853: INFO/System.out(339): Another------->onStart()
08-25 05:02:47.853: INFO/System.out(339): Another------->onResume()
08-25 05:02:48.253: INFO/System.out(339): MainActivity------->onStop()
按Back键返回:
[java] view
plaincopy
08-25 05:03:48.133: INFO/System.out(339): Another------->onPause()
08-25 05:03:48.174: INFO/System.out(339): MainActivity------->onRestart()
08-25 05:03:48.174: INFO/System.out(339): MainActivity------->onStart()
08-25 05:03:48.174: INFO/System.out(339): MainActivity------->onResume()
08-25 05:03:48.483: INFO/System.out(339): Another------->onStop()
08-25 05:03:48.483: INFO/System.out(339): Another------->onDestroy()
第二个Activity使用了finish()方法,返回:
[java] view
plaincopy
08-25 05:10:48.053: INFO/System.out(366): Another------->onPause()
08-25 05:10:48.103: INFO/System.out(366): MainActivity------->onRestart()
08-25 05:10:48.103: INFO/System.out(366): MainActivity------->onStart()
08-25 05:10:48.103: INFO/System.out(366): MainActivity------->onResume()
08-25 05:10:48.423: INFO/System.out(366): Another------->onStop()
08-25 05:10:48.453: INFO/System.out(366): Another------->onDestroy()
但是在当前Activity调出Dialog对话框,Activity不会执行生命周期中的任何方法。
onCreate(Bundle savedInstanceState):可以进行一些初始化的工作在activity第一次被创建的时候调用。这里是你做所有初始化设置的地方──创建视图、绑定数据至列表等
onStart():Activity显示在前台,但还不可与用户交互
onRestart():在activity停止后,在再次启动之前被调用。
onResume():取得控制权,可以对此Activity进行操作此时activity位于堆栈顶部,并接受用户输入。
onPause():暂停,可见,但不可操作,此方法主要用来将未保存的变化进行持久化,停止类似动画这样耗费CPU的动作等
onStop():当activity不再为用户可见时调用此方法
onDestroy():在activity销毁时调用
Android的Activity是堆栈结构,对于上面的这些方法大家应该知道其执行顺序,但大家有没有想过多个Activity切换时,其执行顺序?一个Activity执行完再执行另一个,还是交叉执行?
实践是检验真理的唯一标准。
新建工程,创建两个Activity,从一个Activity通过Intent切换到另一个Activity:
[java] view
plaincopy
08-25 05:02:47.783: INFO/System.out(339): MainActivity------->onPause()
08-25 05:02:47.843: INFO/System.out(339): Another------->onCreate()
08-25 05:02:47.853: INFO/System.out(339): Another------->onStart()
08-25 05:02:47.853: INFO/System.out(339): Another------->onResume()
08-25 05:02:48.253: INFO/System.out(339): MainActivity------->onStop()
按Back键返回:
[java] view
plaincopy
08-25 05:03:48.133: INFO/System.out(339): Another------->onPause()
08-25 05:03:48.174: INFO/System.out(339): MainActivity------->onRestart()
08-25 05:03:48.174: INFO/System.out(339): MainActivity------->onStart()
08-25 05:03:48.174: INFO/System.out(339): MainActivity------->onResume()
08-25 05:03:48.483: INFO/System.out(339): Another------->onStop()
08-25 05:03:48.483: INFO/System.out(339): Another------->onDestroy()
第二个Activity使用了finish()方法,返回:
[java] view
plaincopy
08-25 05:10:48.053: INFO/System.out(366): Another------->onPause()
08-25 05:10:48.103: INFO/System.out(366): MainActivity------->onRestart()
08-25 05:10:48.103: INFO/System.out(366): MainActivity------->onStart()
08-25 05:10:48.103: INFO/System.out(366): MainActivity------->onResume()
08-25 05:10:48.423: INFO/System.out(366): Another------->onStop()
08-25 05:10:48.453: INFO/System.out(366): Another------->onDestroy()
但是在当前Activity调出Dialog对话框,Activity不会执行生命周期中的任何方法。
相关文章推荐
- Android多个Activity切换时其生命周期中的方法执行顺序
- Android多个Activity切换时其生命周期中的方法执行顺序
- Android多个Activity切换时其生命周期中的方法执行顺序
- Android多个Activity切换时其生命周期中的方法执行顺序
- android 没有main函数,怎么找到程序执行入口呢?以及activity主要生命周期的方法说明
- Activity在横竖屏切换、按BACK、按HOME键时执行的生命周期方法总结
- android页面切换和常用方法的执行顺序
- android中,在activity弹出一个对话框,并不会执行onpause生命周期方法
- Activity切换时生命周期执行顺序
- Activity跳转生命周期回调方法执行顺序
- 面试问题 activity生命周期,当设备旋转时android生命周期方法的调用顺序
- 关于Activity、Fragment、ActivityLifecycleCallbacks、FragmentLifecycleCallbacks的生命周期方法执行顺序
- android 中在activity弹出一个对话框,并不会执行onpause生命周期方法
- [转载]Activity生命周期之执行 on*方法顺序
- 关于Android Fragment生命周期以及其他方法的调用执行顺序问题
- android activity跳转生命周期执行顺序 原理
- android 没有main函数,怎么找到程序执行入口呢?以及activity主要生命周期的方法说明
- android手机(设备)横竖屏切换时activity的生命周期是如何执行的?
- 【Android】一张图记录2个Activity切换时生命周期的执行情况
- Fragment与Activity的生命周期调用的方法 横竖屏切换Activity执行的生命周期方法