Activity生命周期

生命周期会调用的方法:

  • onCreate:在首次创建 Activity 时调用。系统向此方法传递一个 Bundle 对象,其中包含 Activity 的上一状态,不过前提是捕获了该状态,而后会调用onStart方法。(一般用于初始化数据)

  • onStart:在 Activity 即将对用户可见之前调用。而后如果Activity转入了前台就会调用onResume方法。 如果此时直接屏幕熄灭或者用户按下home键则会直接调用onStop方法。

  • onResume:在 Activity 即将开始与用户进行交互之前调用。 此时,Activity 处于 Activity 堆栈的顶层,并具有用户输入焦点。当跳转另一个Activity,或者退出当前Activity后会调用onPause方法。

  • onPause:在系统即将开始继续另一个 Activity 时调用。 此方法通常用于确认对持久性数据的未保存更改、停止动画以及其他可能消耗 CPU 的内容,诸如此类。 它应该非常迅速地执行所需操作,因为它返回后,下一个 Activity 才能继续执行,所以不能执行耗时操作。而后正常情况下会调用onStop方法。但是有一种极端情况,就是如果这个时候快速让 当前Activity 返回前台,则会调用onResume方法。

  • onStop:在 Activity 对用户不再可见时调用。如果 Activity 被销毁,或另一个 Activity(一个现有 Activity 或新 Activity)继续执行并将其覆盖,就会调用此方法。而后如果 Activity 恢复与用户的交互,则会调用 onRestart 方法,如果 Activity 被销毁,则会调用onDestroy方法。

  • onRestart:在Activity被停止后再次启动时调用(即屏幕熄灭后再次回到app,按下home键后再次回到app),而后会调用onStart方法。

  • onDestroy:在 Activity 被销毁前或退出后调用,这是 Activity 收到的最后调用。 当 Activity 结束(对 Activity 调用了 finish 方法),或系统为节省空间而暂时销毁该 Activity 实例时,可能会调用它。 你可以通过 isFinishing 方法区分这两种情形。

Activity生命周期图

Activity的 完整生命周期 自第一次调用onCreata()开始,直至调用onDestroy()为止。Activity在onCreata()中设置所有全局状态以完成初始化,而在onDestroy()中释放所有系统资源。

Activity 的 可视生命周期 自onStart()调用开始直到相应的onStop()调用结束。在此期间,用户可以在屏幕上看到Activity,尽管它也许并不是位于前台或者也不与用户进行交互。在这两个方法之间,可以保留用来向用户显示这个Activity所需要的资源。

Activity的 前台生命周期 自OnResume()调用起,至相应的onPause()调用为止。在此期间,Activity位于前台最上面并于用于进行交互,Activity会经常在暂停和恢复之间进行状态转换。列如当设备转入休眠状态或者有新的Activity启动时,将调用onPause()方法。

当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁一个Activity 时会被调用。
当屏幕的方向发生了改变或键盘显示隐藏都会销毁当前Activity,Activity会被摧毁并且被重新创建,如果你想在Activity被摧毁前缓存一些数据,并且Activity被重新创建后恢复缓存的数据。可以重写Activity的一下方法。

onSaveInstanceState() 被销毁前缓存一些数据
onRestoreInstanceState()被重新创建后回复缓存的数据

android:configChanges 属性指定了要捕获屏幕方向和键盘显示隐藏变化,当捕获到这写变化调用Activity的onConfigurationChanged()方法。

<activity
            android:name=".main"
            android:theme="@android:style/Theme.Dialog"
            android:configChanges="keyboardHidden">
<activity>

默认情况下(没有配置android:configChanges属性):

  • 竖屏切横屏,销毁当前Activity之后,创建一个新Activity实例。
  • 横屏切竖屏,销毁当前Activity之后,创建一个新Activity实例。新的Activity实例很快就被销毁,接着又创建一个新Activity实例。如果只希望创建一个实例,可以配置:
    android:configChanges="orientation"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TL。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值