Android生命周期回顾

本文详细介绍了Android中Activity的三种状态:运行中、暂停和停止,以及七个主要的生命周期回调函数:onCreate、onStart、onResume、onRestart、onPause、onStop和onDestroy。此外还介绍了如何通过onSaveInstanceState和onRestoreInstanceState处理屏幕旋转和键盘可用性变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先回顾生命周期

  • Activity一共有3中状态
    • 运行中

    Activity位于前台,并具有用户焦点

  • 暂停

    另一个Activity位于屏幕前台并具有用户焦点,但此Activity仍可见。也就是说,另一个Activity显示在此Activity上方,并且该Activity部分透明或未覆盖整个屏幕。暂停的Activity处于完全活动状态(Activity对象保留在内存中,它保留了所有状态和成员信息,并与窗口管理器保持连接),但在内存极度不足的情况下,可能会被系统终止。

    • 停止

    该 Activity 被另一个 Activity 完全遮盖(该 Activity 目前位于“后台”)。 已停止的 Activity 同样仍处于活动状态(Activity 对象保留在内存中,它保留了所有状态和成员信息,但未与窗口管理器连接)。 不过,它对用户不再可见,在他处需要内存时可能会被系统终止。

如果 Activity 处于暂停或停止状态,系统可通过要求其结束(调用其 finish() 方法)或直接终止其进程,将其从内存中删除。(将其结束或终止后)再次打开 Activity 时,必须重建。

Activity的生命周期主要有7个回调函数:

  1. onCreate
  2. onResume
  3. onRestart
  4. onStart
  5. onPause
  6. onStop
  7. onDestroy

还有onSavaInstanceState onRestoreInstanceState等。

生命周期图

方法说明是否能事后终止?后接
onCreate()首次创建 Activity 时调用。 您应该在此方法中执行所有正常的静态设置 — 创建视图、将数据绑定到列表等等。 系统向此方法传递一个 Bundle 对象,其中包含 Activity 的上一状态,不过前提是捕获了该状态(请参阅后文的保存 Activity 状态)。

始终后接 onStart()

onStart()
    onRestart()在 Activity 已停止并即将再次启动前调用。

始终后接 onStart()

onStart()
onStart()在 Activity 即将对用户可见之前调用。

如果 Activity 转入前台,则后接 onResume(),如果 Activity 转入隐藏状态,则后接 onStop()

onResume()

onStop()
    onResume()在 Activity 即将开始与用户进行交互之前调用。 此时,Activity 处于 Activity 堆栈的顶层,并具有用户输入焦点。

始终后接 onPause()

onPause()
onPause()当系统即将开始继续另一个 Activity 时调用。 此方法通常用于确认对持久性数据的未保存更改、停止动画以及其他可能消耗 CPU 的内容,诸如此类。 它应该非常迅速地执行所需操作,因为它返回后,下一个 Activity 才能继续执行。

如果 Activity 返回前台,则后接 onResume(),如果 Activity 转入对用户不可见状态,则后接 onStop()

onResume()

onStop()
onStop()在 Activity 对用户不再可见时调用。如果 Activity 被销毁,或另一个 Activity(一个现有 Activity 或新 Activity)继续执行并将其覆盖,就可能发生这种情况。

如果 Activity 恢复与用户的交互,则后接 onRestart(),如果 Activity 被销毁,则后接 onDestroy()

onRestart()

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

状态保存

  • onSavaInstanceState 里保存Activity 的瞬态(UI 的状态)
  • onPause 里实现持久性数据保存(例如保存到数据库)

处理屏幕旋转、键盘可用性等变化

发生屏幕旋转,键盘可用性变化之后,系统会调用onDestroy(),然后立即调用onCreate()。处理这种变化的最佳方法就是利用onSavaInstanceState()onRestoreInstanceState()(或onCreate())保存并回复Activity的状态。

转载于:https://www.cnblogs.com/jiy-for-you/p/6892364.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值