Harmony EntryAbility

生命周期方法 触发时机 功能描述
onCreate‌ Ability创建时触发 用于初始化资源
‌ onDestroy‌ Ability销毁时触发 用于释放资源
‌onWindowStageCreate‌ 窗口阶段创建时触发 用于加载UI页面
onWindowStageDestroy‌ 窗口阶段销毁时触发 用于释放窗口相关资源
‌onForeground‌ Ability进入前台时触发 恢复前台运行状态
‌onBackground‌ Ability进入后台时触发 暂停或保存后台状态
‌onNewWant‌ 当有新启动请求时触发 处理新的启动意图

iOS 应用生命周期方法(AppDelegate)

方法名称 调用时机 主要用途

application(_:willFinishLaunchingWithOptions:)	应用启动初期	       状态恢复或预处理
application(_:didFinishLaunchingWithOptions:)	启动完成时	       初始化UIWindow和根视图控制器
applicationDidBecomeActive(_:)	                应用进入前台	       恢复暂停任务或启动交互逻辑
applicationWillResignActive(_:)	                应用即将失去焦点	   暂停敏感操作(如动画、网络请求)
applicationDidEnterBackground(_:)	            应用进入后台	       保存数据或释放非必要资源
applicationWillEnterForeground(_:)	            应用从后台返回前台前  准备数据或UI更新
applicationWillTerminate(_:)	                应用终止前
视图控制器生命周期(UIViewController)
viewDidLoad()	        视图加载完成	  一次性初始化(如设置属性、注册通知)
viewWillAppear(_:)	    视图即将显示	  更新数据或UI(如刷新表格)
viewDidAppear(_:)	    视图已显示	  启动动画或埋点追踪
viewWillDisappear(_:)   视图即将消失	  停止定时器或取消网络请求
viewDidDisappear(_:)    视图完全消失	  释放资源(如移除观察者)
状态转换关系
状态转换 触发条件 典型方法调用链
启动 用户点击图标 willFinishLaunching → didFinishLaunching
前后台切换 切换到其他应用/返回 willResignActive → didEnterBackground / willEnterForeground → didBecomeActive
终止 系统回收内存 willTerminate(可能不调用)

Android Activity生命周期方法

方法 触发时机 功能对应关系
onCreate() Activity首次创建时调用 类比鸿蒙的onCreate,初始化布局和数据
onStart() Activity可见但未进入前台时 无直接对应,鸿蒙无此细分状态
onResume() Activity进入交互状态 类似鸿蒙onForeground完成后的活跃状态
onPause() Activity失去焦点(如弹窗覆盖) 类似鸿蒙onBackground前状态
onStop() Activity完全不可见 对应鸿蒙onBackground的后半阶段
onDestroy() Activity销毁前调用 功能与鸿蒙onDestroy完全一致
与鸿蒙EntryAbility的差异
  • 状态粒度:Android细分了onPause(部分遮挡)和onStop(完全不可见),而鸿蒙合并为onBackground
  • 窗口管理:鸿蒙通过onWindowStageCreate单独管理窗口,Android的窗口操作直接集成在onCreate
  • Android启动流程‌:onCreate() → onStart() → onResume()
  • 鸿蒙EntryAbility启动流程:onCreate() → onWindowStageCreate() → onForeground()

Vue2核心生命周期钩子函数

钩子函数 调用时机 主要用途
‌beforeCreate‌ 实例初始化之后,数据观测(data observer)和事件配置之前 无法访问data、computed和methods,通常用于初始化非响应式数据
‌created‌ 实例创建完成,数据观测和事件配置完成,但未挂载DOM 可访问data和methods,适合发起异步请求或初始化计算属性
‌beforeMount‌ 挂载开始之前,模板已编译为虚拟DOM但未渲染 可访问编译后的虚拟DOM结构,但无法操作实际DOM
‌mounted‌ 组件挂载完成,已渲染为实际DOM 适合执行DOM操作(如第三方库初始化)或访问$refs
‌beforeUpdate‌ 数据更新时,虚拟DOM打补丁之前 可访问更新前的DOM状态,适合手动移除事件监听器等清理操作
‌updated‌ 数据更新导致虚拟DOM重新渲染后 避免在此修改数据,可能导致无限循环
‌beforeDestroy‌ 实例销毁之前 实例仍完全可用,适合清理定时器、取消网络请求等
‌destroyed‌ 实例销毁后 所有绑定解绑,子实例销毁,仅适合最终清理
特殊钩子函数(需特定条件触发)
钩子函数 触发条件 典型应用场景
‌activated‌ 使用缓存的组件激活时 恢复组件状态或重新获取数据
‌deactivated‌ 使用缓存的组件停用时 暂停动画或保存临时状态
‌errorCaptured‌ 捕获子孙组件错误时(v2.5.0+) 错误边界处理,记录错误信息
生命周期执行流程
  • 创建阶段‌:beforeCreate → created(数据观测和事件配置完成)‌
  • 挂载阶段‌:beforeMount → mounted(模板编译和DOM渲染完成)
  • 更新阶段‌:beforeUpdate → updated(数据变更导致视图更新)
  • 销毁阶段‌:beforeDestroy → destroyed(实例完全销毁)

注:使用的组件会额外触发activated/deactivated钩子,而不会进入销毁阶段

Vue3核心生命周期钩子函数(选项式API)

钩子函数 调用时机 主要用途
‌beforeCreate‌ 实例初始化之后,数据观测和事件配置之前 无法访问响应式数据,适合初始化非响应式配置
‌created‌ 实例创建完成,数据观测和事件配置完成,但未挂载DOM 可访问data和methods,适合发起异步请求
‌beforeMount‌ 挂载开始之前,模板已编译为虚拟DOM但未渲染 可访问编译后的虚拟DOM结构
‌mounted‌ 组件挂载完成,已渲染为实际DOM 适合执行DOM操作(如第三方库初始化)
‌beforeUpdate‌ 数据更新时,虚拟DOM打补丁之前 可访问更新前的DOM状态
‌updated‌ 数据更新导致虚拟DOM重新渲染后 避免修改数据,可能导致无限循环
‌beforeUnmount‌ 实例销毁之前(Vue3重命名自beforeDestroy) 清理定时器、取消网络请求等
‌unmounted‌ 实例销毁后(Vue3重命名自destroyed) 所有绑定解绑,子实例销毁
Composition API新增钩子函数
钩子函数 调用方式 功能特点
‌setup()‌ 组件选项或语法 <script setup> 替代beforeCreate/created,所有Composition API的入口点
‌onBeforeMount‌ onBeforeMount(callback) 在beforeMount阶段执行,支持异步操作
‌onMounted‌ onMounted(callback) 替代mounted,支持多回调注册
‌onBeforeUpdate‌ onBeforeUpdate(callback) 在beforeUpdate阶段执行,可访问更新前状态
‌onUpdated‌ onUpdated(callback) 替代updated,支持依赖项控制
‌onBeforeUnmount‌ onBeforeUnmount(callback) 替代beforeUnmount,支持依赖项控制
‌onUnmounted‌ onUnmounted(callback) 替代unmounted,支持依赖项控制
Vue3特有功能钩子
  • 自定义Hooks‌:通过useXxx命名规范封装可复用逻辑(如useCounter),可在多个组件中共享状态和副作
  • 响应式系统钩子‌
    • ref(value):创建基本类型响应式引用
    • reactive(obj):创建对象类型响应式代理
    • watch(source, callback):精确侦听数据变化
  • 错误处理钩子‌:onErrorCaptured(err, vm, info):捕获子孙组件错误(Vue2.5+已有,Vue3增强)
Vue3与Vue2的主要差异
对比维度 Vue2 Vue3
‌入口钩子‌ beforeCreate/created setup()替代两者
‌注册方式‌ 选项对象中声明 函数式调用(onXxx)
‌多实例支持‌ 单实例 可多次调用同一钩子
‌类型推断‌ 弱类型 强类型支持(TypeScript友好)
‌性能优化‌ 全量依赖追踪 精准依赖追踪(仅标记使用项)

Angular核心生命周期钩子函数

钩子函数 调用时机 主要用途
‌ngOnChanges‌ 当输入属性(@Input)值变化时调用(首次调用在ngOnInit前) 响应输入属性变化,获取SimpleChanges对象对比新旧值
‌ngOnInit‌ 组件初始化完成(输入属性已设置),视图未渲染时调用 初始化数据(如API请求)、设置默认状态
‌ngDoCheck‌ 每次变更检测周期运行时调用 手动检测Angular忽略的变更(如对象内部属性变化)
‌ngOnDestroy‌ 组件销毁前调用 清理定时器、取消订阅、移除事件监听
组件特有钩子函数
钩子函数 调用时机 主要用途
‌ngAfterContentInit‌ 内容投影()初始化完成后 访问@ContentChild查询的投影内容
‌ngAfterContentChecked‌ 每次检查投影内容后 监控投影内容的变化
‌ngAfterViewInit‌ 组件视图初始化完成后 执行DOM操作(如第三方库初始化)
‌ngAfterViewChecked‌ 每次检查视图后 监控视图状态变化
生命周期执行顺序

创建阶段‌:ngOnChanges → ngOnInit → ngDoCheck(输入属性设置和初始化完成)
内容阶段‌:ngAfterContentInit → ngAfterContentChecked(投影内容处理完成)
视图阶段‌:ngAfterViewInit → ngAfterViewChecked(视图渲染和检查完成)
‌销毁阶段‌:ngOnDestroy(实例完全销毁)

典型使用场景

数据初始化‌:ngOnInit中加载初始数据
属性监听‌:ngOnChanges响应父组件传入的配置变化
‌自定义检测‌:ngDoCheck处理复杂对象变更
DOM操作‌:ngAfterViewInit初始化图表/地图等库
资源清理‌:ngOnDestroy取消未完成的异步请求

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐