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

相关推荐
闲暇部落1 小时前
‌Kotlin中的?.和!!主要区别
android·开发语言·kotlin
诸神黄昏EX3 小时前
Android 分区相关介绍
android
大白要努力!4 小时前
android 使用SQLiteOpenHelper 如何优化数据库的性能
android·数据库·oracle
Estar.Lee4 小时前
时间操作[取当前北京时间]免费API接口教程
android·网络·后端·网络协议·tcp/ip
Winston Wood4 小时前
Perfetto学习大全
android·性能优化·perfetto
Dnelic-7 小时前
【单元测试】【Android】JUnit 4 和 JUnit 5 的差异记录
android·junit·单元测试·android studio·自学笔记
Eastsea.Chen9 小时前
MTK Android12 user版本MtkLogger
android·framework
长亭外的少年17 小时前
Kotlin 编译失败问题及解决方案:从守护进程到 Gradle 配置
android·开发语言·kotlin
建群新人小猿19 小时前
会员等级经验问题
android·开发语言·前端·javascript·php
1024小神20 小时前
tauri2.0版本开发苹果ios和安卓android应用,环境搭建和最后编译为apk
android·ios·tauri