android Activity生命周期

android 中一个 activity 在其生命周期中会经历多种状态。 您可以使用一系列回调来处理状态之间的转换。下面我们来介绍这些回调。

onCreate(创建阶段)

初始化组件:在这个阶段,Activity的主要工作是进行初始化操作。这包括为Activity设置布局内容,通过调用setContentView()方法加载布局文件。

绑定事件:初始化各种控件,并为其设置监听器。例如,通过findViewById()获取按钮控件,并设置OnClickListener监听用户的点击事件。

配置参数:读取Intent传递过来的数据,并根据需要对Activity进行配置。

加载资源:完成一些资源密集型的操作,如读取文件、数据库查询等,以确保UI显示前一切准备就绪。

onStart(开始阶段)

进入就绪状态:此阶段表明Activity正在被启动,但此时还不在前台。用户仍然看不到Activity。

恢复数据:在onStart阶段,可以重新关联到之前保存的数据,确保Activity能够恢复到之前的状态。

分配资源:为即将展现给用户的Activity准备必须的资源,如网络连接、传感器等。

设置状态:更新Activity的内部状态,以反映它正在运行但尚未出现在前台。

onResume(恢复阶段)

用户交互:在此阶段,Activity进入前台并开始与用户交互。此时Activity处于就绪状态,用户可以看到并操作这个界面。

恢复焦点:Activity会获得系统输入的焦点,用户可以通过键盘、触摸等进行操作。

动画处理:如果有动画需要展示,可以在onResume阶段开始执行。

最后调整:进行最后的UI调整,确保用户体验流畅。

onPause(暂停阶段)

节省资源:当系统认为需要回收内存时,可能会调用此方法。在onPause阶段,Activity即将停止所有CPU使用,但依然可见。

保存数据:在暂停前,应该将当前数据和状态保存下来,防止数据丢失。

中止动画:如果有动画正在运行,应在此时停止,以避免消耗过多资源。

异步处理:如果有一些高优先级的任务还未完成,可在此阶段迅速完成或将其交给其他线程处理。

onStop(停止阶段)

完全不可见:Activity即将完全从用户视线中消失,此时不可见且不再能与用户交互。

释放资源:释放掉不必要的资源,如动态创建的视图、Bitmap等,以节省内存。

保存应用状态:保存必要的应用状态,以便重新回到此Activity时能够恢复。

避免泄露:确保所有的资源都已经正确释放,避免内存泄漏问题。

onRestart(重启阶段)

重新启动:当Activity从停止状态进入重新启动状态时,会调用此方法。此时Activity正准备再次可见。

重置数据:重新初始化数据结构,准备好再次显示UI。

重新绑定:重新绑定到数据源或其他必要服务。

恢复配置:根据保存的状态重新配置Activity,确保一致性。

onDestroy(销毁阶段)

清理资源:这是Activity生命周期的最后一个阶段,即将被销毁。此时应释放所有资源,确保没有任何内存泄漏。

注销监听:取消注册的所有监听器,包括广播接收者和任何回调。

持久化数据:将需要持久化的数据保存到存储设备上。

结束任务:终止所有后台任务,如线程、计时器等。

总结

Activity生命周期涵盖了从创建到销毁的全过程,每个阶段都有其特定的任务和职责,确保应用在不同状态下都能表现出色。必须理解并合理利用这些生命周期方法。

相关推荐
2501_944424125 小时前
Flutter for OpenHarmony游戏集合App实战之贪吃蛇食物生成
android·开发语言·flutter·游戏·harmonyos
2501_937145418 小时前
神马影视8.8版2026最新版:核心技术升级与多场景适配解析
android·源码·电视盒子·源代码管理
2501_9444241210 小时前
Flutter for OpenHarmony游戏集合App实战之俄罗斯方块七种形状
android·开发语言·flutter·游戏·harmonyos
不会Android的潘潘11 小时前
受限系统环境下的 WebView 能力演进:车载平台 Web 渲染异常的根因分析与优化实践
android·java·前端·aosp
建军啊11 小时前
java web常见lou洞
android·java·前端
豆奶dudu11 小时前
安卓应用签名生成+微信开放平台安卓应用签名
android·微信开放平台
AC赳赳老秦13 小时前
Dify工作流+DeepSeek:运维自动化闭环(数据采集→报告生成)
android·大数据·运维·数据库·人工智能·golang·deepseek
2501_9444241213 小时前
Flutter for OpenHarmony游戏集合App实战之记忆翻牌配对消除
android·java·开发语言·javascript·windows·flutter·游戏
2501_9445264213 小时前
Flutter for OpenHarmony 万能游戏库App实战 - 设置功能实现
android·javascript·flutter·游戏·harmonyos
冬奇Lab13 小时前
【Kotlin系列11】协程原理与实战(下):Flow与Channel驯服异步数据流
android·开发语言·kotlin