[Android]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交替地对用户可见或隐藏。

  • 3.Activity的foreground lifetime (前台的生命期)发生在调用onResume()和onPause()之间。

在这期间,Activity在屏幕上所有其他Activity的前面,有用户输入焦点。
一个Activity能频繁的在前台进入和出去之间转变。

生命周期五种状态

  1. 启动状态:Activity的启动状态很短暂,当Activity启动后便会进入运行状态。
  2. 运行状态:Activity在此状态时处于屏幕最前端,它是可见、有焦点的,可以与用户进行交互。如单击、长按等事件。即使出现内存不足的情况,Android也会先销毁栈底的Activity,来确保当前的Activity正常运行。
  3. 暂停状态:在某些情况下,Activity对用户来说仍然可见,但它无法获取焦点,用户对它操作没有没有响应,此时它处于暂停状态。
  4. 停止状态:当Activity完全不可见时,它处于停止状态,但仍然保留着当前的状态和成员信息。如系统内存不足,那么这种状态下的Activity很容易被销毁。
  5. 销毁状态:当Activity处于销毁状态时,将被清理出内存。

生命周期七种方法

  1. onCreate()方法:Activity首次创建时被调用。用于设置Activity的布局文件,绑定按钮监听器等一些普通静态操作。
  2. onStart()方法:在Activity即将可见时调用。
  3. onResume()方法:在Activity获取焦点开始与用户交互时调用。
  4. onPause()方法:在当前Activity被其他Activity覆盖或锁屏时调用。一般用于保存当前Activity中的数据。
  5. onStop()方法:在Activity对用户不可见时调用。
  6. onDestroy()方法:调用Activity的finish()方法或Android系统资源不足时被调用。
  7. onRestart()方法:在Activity从停止状态再次启动时调用

onCreate和onStart之间有什么区别?

  1. 可见与不可见的区别。前者不可见,后者可见。
  2. onCreate方法只在Activity创建时执行一次,而onStart方法在Activity中被多次调用。onCreate能做的事onStart其实都能做,但是onStart能做的事onCreate却未必适合做。如前文所说的,setContentView和资源初始化在两者都能做,然而想动画的初始化在onStart中做比较好。

onStart方法和onResume方法有什么区别?

  1. 是否在前台。onStart方法中Activity可见但不在前台,不可交互,而在onResume中在前台。
  2. 职责不同,onStart方法中主要还是进行初始化工作,而onResume方法,根据官方的建议,可以做开启动画和独占设备的操作。

onPause方法和onStop方法有什么区别?

  1. 是否可见。onPause时Activity可见,onStop时Activity不可见,但Activity对象还在内存中。
  2. 在系统内存不足的时候可能不会执行onStop方法,因此程序状态的保存、独占设备和动画的关闭、以及一些数据的保存最好在onPause中进行,但要注意不能太耗时。

按键对生命周期的影响

BACK键

  1. 当我们按BACK键时,我们这个应用程序将结束,这时候我们将先后调用onPause()->onStop()->onDestory()三个方法。
  2. 再次启动App时,会执行onCreate()->onStart()->onResume()

HOME键

  1. 按HOME的时候,Activity先后执行了onPause()->onStop()这两个方法,这时候应用程序并没有销毁。
  2. 而当我们从桌面再次启动应用程序时,则先后分别执行了onRestart()->onStart()->onResume()三个方法。

横竖屏切换时Activity的生命周期

从竖屏--横屏:从当前界面依次会走onPuse()--onStop()--onDestory()--onCreate()--onStart()--onResume()。可以看出竖屏会销毁,横屏会重新创建。

发布了449 篇原创文章 · 获赞 180 · 访问量 87万+

猜你喜欢

转载自blog.csdn.net/ouyangshima/article/details/78222000