android 七种状态,[Android]Activity生命周期之三大循环|五种状态|七种方法

4ca34a159b67c6a629ccb5cb20c0e84f.png

生命周期三大循环

我们能监控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能频繁的在前台进入和出去之间转变。

生命周期五种状态

ad7f3e97941a31136e6ac09a486ecbc6.png

启动状态: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()。可以看出竖屏会销毁,横屏会重新创建。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值