博客
关于我
Android Activity 活动的生命周期
阅读量:492 次
发布时间:2019-03-07

本文共 2006 字,大约阅读时间需要 6 分钟。

Activity 类是 Android 开发中一个核心概念,掌握它的生命周期对理解如何实现 activity 的创建、管理和销毁非常重要。每个 Activity 都会经历一系列回调方法的调用,这些方法与活动的状态变化紧密相关。以下将详细介绍 Activity 的生命周期相关知识。

Activity 的回调方法

Activity 类中定义了七个回调方法,覆盖了活动从创建到销毁的整个过程。除此之外,这些方法还分为两两对应的形式,即一个方法会在某种状态发生改变时被调用,而对应的另一个方法会在状态恢复时被调用。

  • onCreate():这个方法会在 activity 第一次被创建的时候调用。开发者应该在这个方法中完成 activity 初始化相关的工作,比如加载布局文件、绑定视图控件、设置点击事件等。这个方法接受一个 Bundle 型参数,通常传递的是之前保存下来的状态信息。

  • onStart():当 activity 从不可见状态转换为可见状态时,系统会调用这个方法。在这个阶段,activity 需要准备好显示给用户,通常需要进行资源加载,如数据初始化、背景音乐或动画的播放等。

  • onResume():当 activity 准备好与用户进行交互时,系统会调用这个方法。此时 activity 必须位于返回栈的栈顶,并处于运行状态。通常可以在这个方法中继续进行初始化操作,但不能耗时过多,否则可能会影响用户体验。

  • onPause():当系统准备去启动或恢复另一个 activity 时,会调用这个方法。此时开发者通常会释放一些消耗 CPU 资源的操作,并对关键数据进行保存。这个方法的执行速度需要尽可能快,以确保不会影响到新栈顶活动的使用。

  • onStop():当 activity 完全不可见时,系统会调用这个方法。这一步骤比 onPause() 更为彻底,开发者需要在这里进一步释放资源。需要注意的是,如果新启动的 activity 是一个 dialog 样式的,可能只会调用 onpause() 方法,而不会调用 onstop() 方法。

  • onDestroy():这个方法会在 activity 被销毁之前调用。在这个阶段,系统会回收 activity 的资源,释放相关内存空间。开发者通常在这里进行一些 cleanup operation,以确保资源不会被手动释放。

  • onRestart():这个方法有点特别,它会在 activity 从停止状态重新转换为运行状态的时候被调用。这意味着 activity 已经从不可见状态恢复到了可见状态,准备好与用户进行交互。

  • 数据保存与恢复

    在实际应用开发中,activity 经常会被 system 回收,这意味着 state data 可能会丢失。为了解决这个问题,开发者可以利用 onSaveInstanceState "() 方法来保存 activity 在未被回收前的临时数据。在这个方法中,开发者可以将关键数据加密保存到一个 Bundle 对象中,等待 activity 被重建之前恢复这些数据。

    代码示例

    @Overrideprotected void onSaveInstanceState(@NonNull Bundle outState) {    super.onSaveInstanceState(outState);    // 可以将一些临时数据加密保存到 outState 中    outState.put("key", "value");}

    在 activity 被重建之前,系统会自动恢复这些保存在 Bundle 中的数据。在 activity 的 onCreate() 方法中,可以检查是否存在 savedInstanceState 并从中提取数据进行恢复。

    @Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    if (savedInstanceState != null) {        String value = savedInstanceState.getString("key");        // 根据需要处理恢复的数据    }}

    总结

    通过了解和正确使用 activity 的回调方法,开发者能够更好地管理 activity 的生命周期,确保应用程序的运行流畅和稳定。同时,通过合理利用 onSaveInstanceState() 方法保存和恢复数据,能够避免应用状态丢失的问题。在实际开发中,可以根据具体需求灵活配置这些方法,以实现更高效的资源管理和状态保存。

    转载地址:http://muscz.baihongyu.com/

    你可能感兴趣的文章
    opencv_core.dir/objects.a(vs_version.rc.obj)‘ is incompatible with i386:x86-64 output
    查看>>
    opencv——图像缩放1(resize)
    查看>>
    opencv——最简单的视频读取
    查看>>
    Opencv——模块介绍
    查看>>
    OpenCV与AI深度学习 | 2024年AI初学者需要掌握的热门技能有哪些?
    查看>>
    OpenCV与AI深度学习 | CIB-SE-YOLOv8: 优化的YOLOv8, 用于施工现场的安全设备实时检测 !
    查看>>
    OpenCV与AI深度学习 | CoTracker3:用于卓越点跟踪的最新 AI 模型
    查看>>
    OpenCV与AI深度学习 | OpenCV中八种不同的目标追踪算法
    查看>>
    OpenCV与AI深度学习 | OpenCV图像拼接--Stitching detailed使用与参数介绍
    查看>>
    OpenCV与AI深度学习 | OpenCV如何读取仪表中的指针刻度
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(一) :直接拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(三):基于特征匹配拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(二) :基于模板匹配拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(四):基于Stitcher类拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | PaddleOCR 2.9 发布, 正式开源文本图像智能分析利器
    查看>>
    OpenCV与AI深度学习 | SAM2(Segment Anything Model 2)新一代分割一切大模型介绍与使用(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | T-Rex Label !超震撼 AI 自动标注工具,开箱即用、检测一切
    查看>>
    OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
    查看>>
    OpenCV与AI深度学习 | YOLOv10在PyTorch和OpenVINO中推理对比
    查看>>