学习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 plain copy
  1. 08-2505:02:47.783:INFO/System.out(339):MainActivity------->onPause()
  2. 08-2505:02:47.843:INFO/System.out(339):Another------->onCreate()
  3. 08-2505:02:47.853:INFO/System.out(339):Another------->onStart()
  4. 08-2505:02:47.853:INFO/System.out(339):Another------->onResume()
  5. 08-2505:02:48.253:INFO/System.out(339):MainActivity------->onStop()

按Back键返回:

[java] view plain copy
  1. 08-2505:03:48.133:INFO/System.out(339):Another------->onPause()
  2. 08-2505:03:48.174:INFO/System.out(339):MainActivity------->onRestart()
  3. 08-2505:03:48.174:INFO/System.out(339):MainActivity------->onStart()
  4. 08-2505:03:48.174:INFO/System.out(339):MainActivity------->onResume()
  5. 08-2505:03:48.483:INFO/System.out(339):Another------->onStop()
  6. 08-2505:03:48.483:INFO/System.out(339):Another------->onDestroy()

第二个Activity使用了finish()方法,返回:

[java] view plain copy
  1. 08-2505:10:48.053:INFO/System.out(366):Another------->onPause()
  2. 08-2505:10:48.103:INFO/System.out(366):MainActivity------->onRestart()
  3. 08-2505:10:48.103:INFO/System.out(366):MainActivity------->onStart()
  4. 08-2505:10:48.103:INFO/System.out(366):MainActivity------->onResume()
  5. 08-2505:10:48.423:INFO/System.out(366):Another------->onStop()
  6. 08-2505:10:48.453:INFO/System.out(366):Another------->onDestroy()

但是在当前Activity调出Dialog对话框,Activity不会执行生命周期中的任何方法。


更多相关文章

  1. Android通过Alpha实现渐变效果的几个方法
  2. Android中AVD(Android Virtual Device)不能启动的处理方法
  3. 两种android app调用jar的方法
  4. Android的性能优化方法
  5. Android中切换屏幕方向时Activity生命周期函数执行情况分析
  6. Android之Activity生命周期总结(一)
  7. Android 中LayoutInflater(布局加载器)源码篇之createViewFromTag
  8. Android智能指针SP WP使用方法介绍

随机推荐

  1. android的Home键的监听封装工具类(一)
  2. Android bitmap的压缩方式总结
  3. Android Handler线程间通信机制分析
  4. Android抓屏源码
  5. Android Gson 泛型解析
  6. 改变android 选项卡的背景色
  7. 'ADB server didn't ACK'的解决办法
  8. Android_J2meBuilder介绍
  9. Android系统中调试动态链接库.so文件的步
  10. 高德地图自定义Marker点击时出现的InfoWi