页面和组件生命周期

一 UIAbility

UIAbility组件是一种包含UI的应用组件,主要用于和用户交互,一半是一个UIAbility

  • 任务视图中看到一个任务,则建议使用一个UIAbility,多个页面的方式
  • 任务视图中看到多个任务,或者需要同时开启多个窗口,则建议使用多个UIAbility开发不同的模块功能

配置

在main下面的module.json5中,

  • name :UIAbility组件的名称
  • srcEntry:UIAbility组件的代码路径
  • description:组件的描述信息
  • icon 桌面上的icon
  • startWindowIcon 启动页面中间的icon
  • startWindowBackground 启动页面的背景颜色
ts 复制代码
"abilities": [
      {
        "name": "EntryAbility", // UIAbility组件的名称
        "srcEntry": "./ets/entryability/EntryAbility.ets", // UIAbility组件的代码路径
        "description": "$string:EntryAbility_desc", // UIAbility组件的描述信息
        "icon": "$media:icon", // UIAbility组件的图标
        "label": "$string:EntryAbility_label", // UIAbility组件的标签
        "startWindowIcon": "$media:icon", // UIAbility组件启动页面图标资源文件的索引
        "startWindowBackground": "$color:start_window_background", // UIAbility组件启动页面背景颜色资源文件的索引
      }
  ]

生命周期

下面是一个UIAbility的例子场景

  • onCreate 应用创建,UIAbility实例创建完成时触发
  • onWindowStageCreate 主Window创建完成 windowStage.loadContent 加载第一个组件
  • onForeground 在前台
  • onBackground 应用退到后台
  • onWindowStageWillDestroy 即将被销毁
  • onWindowStageDestroy window销毁,释放UI资源,例如在onWindowStageDestroy()中注销获焦/失焦等WindowStage事件
  • onDestroy 应用销毁

其他的先不考虑了,其他都是关于多 UIAbility

二 Entry装饰的组件生命周期,提供以下生命周期接口:

  • onPageShow 页面每次显示时触发一次,包括路由过程、应用进入前台等场景。相当于onReusme
  • onPageHide 页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景。相当于onPause
  • onBackPress 当用户点击返回按钮时触发。

Component装饰的自定义组件的生命周期,提供以下生命周期接口:

  • aboutToAppear组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行。
  • onDidBuild 组件build()函数执行完成之后回调该接口,不建议在onDidBuild函数中更改状态变量、使用animateTo等功能,这可能会导致不稳定的UI表现。
  • aboutToDisappear aboutToDisappear函数在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定,当if else 添加或移除的时候也会执行这里
相关推荐
abc800211703427 分钟前
前端Bug 修复手册
前端·bug
Best_Liu~30 分钟前
el-table实现固定列,及解决固定列导致部分滚动条无法拖动的问题
前端·javascript·vue.js
_斯洛伐克1 小时前
下降npm版本
前端·vue.js
苏十八2 小时前
前端进阶:Vue.js
前端·javascript·vue.js·前端框架·npm·node.js·ecmascript
st紫月3 小时前
用MySQL+node+vue做一个学生信息管理系统(四):制作增加、删除、修改的组件和对应的路由
前端·vue.js·mysql
乐容4 小时前
vue3使用pinia中的actions,需要调用接口的话
前端·javascript·vue.js
似水明俊德4 小时前
ASP.NET Core Blazor 5:Blazor表单和数据
java·前端·javascript·html·asp.net
至天5 小时前
UniApp 中 Web/H5 正确使用反向代理解决跨域问题
前端·uni-app·vue3·vue2·vite·反向代理
与墨学长5 小时前
Rust破界:前端革新与Vite重构的深度透视(中)
开发语言·前端·rust·前端框架·wasm
H-J-L6 小时前
Web基础与HTTP协议
前端·http·php