
回复
回调函数 | 回调时机 | 使用 |
---|---|---|
onCreate() | 在首次创建UIAbility实例时触发,仅执行一次 | 在该回调中执行UIAbility整个生命周期中仅发生一次的启动逻辑 |
onWindowStageCreate() | UIAbility实例创建完成之后,在进入前台之前执行 | 在该回调中进行UI加载、WindowStage的事件订阅 |
onForeground() | UIAbility实例进入前台状态 | 在该回调中申请系统需要的资源 |
onBackground() | UIAbility实例切换至后台状态 | 在该回调中释放UI不可见时的无用资源 |
onWindowStageWillDestroy() | 在UIAbility实例销毁之前,当WindowStage即将销毁时 | 在该回调用释放通过WindowStage获取的资源、注销WindowStage事件订阅 |
onWindowStageDestroy() | 仅当UIAbility正常退出时会触发该回调,异常退出场景(例如低内存查杀)不会触发 | 在该回调中释放UI资源,此时WindowStage不可以使用 |
onDestroy() | 仅当UIAbility正常退出时会触发该回调,异常退出场景(例如低内存查杀)不会触发 | 在该回调中进行系统资源的释放、数据的保存等操作 |
onNewWant() | 当应用的UIAbility实例已创建,再次调用方法启动该UIAbility实例时 | 在该回调中更新要加载的资源和数据等,用于后续的UI展示 |
回调函数 | 回调时机 | 使用 |
---|---|---|
aboutToAppear | 在创建自定义组件的新实例后,在执行其build()函数之前执行 | 执行当前节点组件的初始化逻辑,避免高耗时操作阻塞主线程,可以采用多线程处理该任务,通过并发的方式避免主线程阻塞 |
onDidBuild | 在组件首次渲染触发的build函数执行完成之后回调 | 可以在这个阶段进行埋点数据上报等不影响实际UI的功能。不建议在onDidBuild函数中更改状态变量、使用animateTo等功能,这可能会导致不稳定的UI表现 |
aboutToDisappear | 在自定义组件析构销毁之前执行 | 不允许在aboutToDisappear函数中改变状态变量 |
onPageShow | router路由页面(仅@Entry装饰的自定义组件)每次显示时触发一次 | 页面加载完成可见 |
onPageHide | router路由页面(仅@Entry装饰的自定义组件)每次隐藏时触发一次 | 避免执行高耗时操作阻塞主线程造成卡顿。对于高耗时操作例如相机资源释放,推荐使用异步方案替代 |
onBackPress | 当用户点击返回按钮时触发(仅router路由页面生效) | 返回true表示页面自己处理返回逻辑,不进行页面路由;返回false表示使用默认的路由返回逻辑,不设置返回值按照false处理 |
1.冷启动,点击桌面应用,执行过程
=========EntryAbility: onCreate()
=========EntryAbility: onWindowStageCreate()
=========EntryAbility: onForeground()
=========Component: aboutToAppear()
=========Component: onDidBuild()
=========ChildComponent: aboutToAppear()
=========ChildComponent: onDidBuild()
=========Component: onPageShow()
2.按返回键回到桌面
=========Component: onBackPress()
=========EntryAbility: onBackground()
=========Component: onPageHide()
3.热启动,点击桌面应用
=========EntryAbility: onNewWant()
=========Component: onPageShow()
=========EntryAbility: onForeground()
4.杀死进程
=========EntryAbility: onBackground()
=========Component: onPageHide()
=========EntryAbility: onWindowStageWillDestroy()
=========Component: aboutToDisappear()
=========ChildComponent: aboutToDisappear()
=========EntryAbility: onWindowStageDestroy()
=========EntryAbility: onDestroy()