详细阐述Activity的生命周期

目录

1. onCreate():

2. onStart():

3. onResume():

4. onPause():

5. onStop():

6. onRestart():

7. onDestroy():

活动生命周期图:

特别说明:

例子:


Android 中的 Activity 生命周期定义了 Activity 从创建到销毁所经历的状态。了解这些状态对于管理应用中的资源分配、用户交互和后台进程至关重要。

1. onCreate()

  • 这是创建活动时调用的第一个回调。
  • 目的:初始化活动。使用 设置 UI setContentView()、初始化变量,以及如果活动之前被销毁(通过savedInstanceState包)则恢复状态。
  • 调用一次:当活动首次创建或终止后重新创建时。

2. onStart()

  • onCreate()当活动对用户可见时,调用。
  • 目的:这是您准备与用户交互的活动的地方。例如,启动动画或开始显示数据更新。
  • 该活动尚未处于前台,但可见。

3. onResume()

  • 当活动即将进入前台并开始与用户交互时调用。
  • 目的:这是活动开始运行的地方。活动处于焦点状态,用户可以与其交互。恢复任何暂停的 UI 更新、线程或后台任务。
  • 每次活动暂停后恢复时调用,例如从另一个活动返回。

4. onPause()

  • 当 Activity 被另一个 Activity 部分遮挡(但未完全隐藏)时,将调用此方法。Activity 仍然可见,但不再处于焦点中。
  • 目的:在活动未获得焦点时释放不需要的任何资源(如相机或传感器)。停止 UI 更新或动画。
  • 数据保存至关重要:您应该在这里保存数据或状态,因为下一个状态可能是onStop()甚至被终止的活动。

5. onStop()

  • 当活动对用户不再可见时调用。
  • 目的:在这里释放不需要的资源,直到活动再次可见(例如保存复杂状态、停止长时间运行的进程或关闭网络连接)。
  • 如果应用程序回到前台,onRestart()将会被调用,然后是onStart()

6. onRestart()

  • 仅当活动停止后返回前台时才调用。
  • 目的:这通常是一种简短的方法,您可以用它重新初始化资源或刷新数据。
  • 当活动回到前台时之后onStop()和之前调用。onStart()

7. onDestroy()

  • 当活动被系统(以回收资源)或用户(完成活动)销毁时调用。
  • 目的:这是你对资源进行最终清理的地方。这是 Activity 完全从内存中删除之前的最终状态。
  • onPause()如果在或期间未保存任何关键数据,您还应确保在此处保存这些数据onStop()

活动生命周期图:

onCreate()
  ↓
onStart()
  ↓
onResume() - (Activity is running)
  ↓
onPause() - (Another activity comes into focus)
  ↓
onStop() - (Activity is no longer visible)
  ↓
onRestart() (If the activity comes back to foreground)
  ↓
onDestroy() (When activity is completely finished)

特别说明:

  • 状态保存:在onPause()或期间onStop(),使用savedInstanceStatebundle 来存储必要的状态数据。这允许 Activity 在被销毁并重新创建时恢复自身。
  • 背景和前台onResume()用于onPause()管理前台和背景之间的转换。暂停活动与停止活动不同,因为暂停发生在活动仍然部分可见时。

例子:

  • 当电话呼叫中断应用程序时,活动将进入此onPause()状态。如果用户返回,onResume()则被调用。如果活动被完全覆盖(例如,用户转到主屏幕),onStop()则被调用。

此生命周期对于有效管理内存和资源、提供流畅的用户体验至关重要。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值