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

相关推荐
BD_Marathon6 小时前
【MySQL】函数
android·数据库·mysql
西西学代码7 小时前
安卓开发---耳机的按键设置的UI实例
android·ui
maki07711 小时前
虚幻版Pico大空间VR入门教程 05 —— 原点坐标和项目优化技巧整理
android·游戏引擎·vr·虚幻·pico·htc vive·大空间
千里马学框架12 小时前
音频焦点学习之AudioFocusRequest.Builder类剖析
android·面试·智能手机·车载系统·音视频·安卓framework开发·audio
fundroid15 小时前
掌握 Compose 性能优化三步法
android·android jetpack
TeleostNaCl16 小时前
如何在 IDEA 中使用 Proguard 自动混淆 Gradle 编译的Java 项目
android·java·经验分享·kotlin·gradle·intellij-idea
旷野说17 小时前
Android Studio Narwhal 3 特性
android·ide·android studio
maki0771 天前
VR大空间资料 01 —— 常用VR框架对比
android·ue5·游戏引擎·vr·虚幻·pico
xhBruce1 天前
InputReader与InputDispatcher关系 - android-15.0.0_r23
android·ims
领创工作室1 天前
安卓设备分区作用详解-测试机红米K40
android·java·linux