[Android]Activity生命周期之三大循环|五种状态|七种方法
Posted ouyangshima
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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能频繁的在前台进入和出去之间转变。
生命周期五种状态
- 启动状态:Activity的启动状态很短暂,当Activity启动后便会进入运行状态。
- 运行状态:Activity在此状态时处于屏幕最前端,它是可见、有焦点的,可以与用户进行交互。如单击、长按等事件。即使出现内存不足的情况,Android也会先销毁栈底的Activity,来确保当前的Activity正常运行。
- 暂停状态:在某些情况下,Activity对用户来说仍然可见,但它无法获取焦点,用户对它操作没有没有响应,此时它处于暂停状态。
- 停止状态:当Activity完全不可见时,它处于停止状态,但仍然保留着当前的状态和成员信息。如系统内存不足,那么这种状态下的Activity很容易被销毁。
- 销毁状态:当Activity处于销毁状态时,将被清理出内存。
生命周期七种方法
- onCreate()方法:Activity首次创建时被调用。用于设置Activity的布局文件,绑定按钮监听器等一些普通静态操作。
- onStart()方法:在Activity即将可见时调用。
- onResume()方法:在Activity获取焦点开始与用户交互时调用。
- onPause()方法:在当前Activity被其他Activity覆盖或锁屏时调用。一般用于保存当前Activity中的数据。
- onStop()方法:在Activity对用户不可见时调用。
- onDestroy()方法:调用Activity的finish()方法或Android系统资源不足时被调用。
- onRestart()方法:在Activity从停止状态再次启动时调用
onCreate和onStart之间有什么区别?
- 可见与不可见的区别。前者不可见,后者可见。
- onCreate方法只在Activity创建时执行一次,而onStart方法在Activity中被多次调用。onCreate能做的事onStart其实都能做,但是onStart能做的事onCreate却未必适合做。如前文所说的,setContentView和资源初始化在两者都能做,然而想动画的初始化在onStart中做比较好。
onStart方法和onResume方法有什么区别?
- 是否在前台。onStart方法中Activity可见但不在前台,不可交互,而在onResume中在前台。
- 职责不同,onStart方法中主要还是进行初始化工作,而onResume方法,根据官方的建议,可以做开启动画和独占设备的操作。
onPause方法和onStop方法有什么区别?
- 是否可见。onPause时Activity可见,onStop时Activity不可见,但Activity对象还在内存中。
- 在系统内存不足的时候可能不会执行onStop方法,因此程序状态的保存、独占设备和动画的关闭、以及一些数据的保存最好在onPause中进行,但要注意不能太耗时。
按键对生命周期的影响
BACK键
- 当我们按BACK键时,我们这个应用程序将结束,这时候我们将先后调用onPause()->onStop()->onDestory()三个方法。
- 再次启动App时,会执行onCreate()->onStart()->onResume()
HOME键
- 按HOME的时候,Activity先后执行了onPause()->onStop()这两个方法,这时候应用程序并没有销毁。
- 而当我们从桌面再次启动应用程序时,则先后分别执行了onRestart()->onStart()->onResume()三个方法。
横竖屏切换时Activity的生命周期
从竖屏--横屏:从当前界面依次会走onPuse()--onStop()--onDestory()--onCreate()--onStart()--onResume()。可以看出竖屏会销毁,横屏会重新创建。
以上是关于[Android]Activity生命周期之三大循环|五种状态|七种方法的主要内容,如果未能解决你的问题,请参考以下文章