UIAbility
什么是UIAbility
UIAbility:是一种包含用户界面的应用组件,主要用于和用户进行交互。UIAbility也是系统调度的单元,为应用提供窗口在其中绘制界面。 每一个UIAbility实例,都对应一个最近任务列表中的任务 应用的几种进入方式 1、桌面点击应用图标 2、应用间跳转 3、调度器切换 注意:一个应用可以有一个UIAbility实例,也可以有多个,建议将一个独立的功能模块放到一个UIAbility中,以多页面的形式展示,例如新闻应用在浏览内容的时候,可以进行多页面的跳转使用
页面跳转传参
方式一:API9及以上,router方法新增了mode参数,可以将mode参数配置为单例模式router.RouterMode.Single和多实例模式router.RouterMode.Standard 在单例模式下:如果目标页面的URL在页面栈中已经存在同URL页面,离栈顶最近同URL页面会被移动到栈顶,移动后的页面作为新建页, 原来的页面仍然存在栈中,页面栈的元素数量不变。如果目标页面URL在页面中不存在同URL页面,按多实例模式跳转,页面栈元素数量加一。 注意:页面数超过32时或者自己感觉多了,打算直接返回顶部,可以通过router.clear()方法清空页面栈,仅保留当前页面作为栈顶页面。 方式二:API9及以上,router.replaceUrl()方法新增了mode参数,可以将mode参数配置为router.RouterMode.Single单实例模式和router.RouterMode.Standard多实例模式。 在单实例模式下:如果目标页面的url在页面栈中已经存在同url页面,离栈顶最近同url页面会被移动到栈顶,替换当前页面,并销毁被替换的当前页面,移动后的页面为新建页,页面栈的元素数量会减1;如果目标页面的url在页面栈中不存在同url页面,按多实例模式跳转,页面栈的元素数量不变。 页面A
Text(this.demo3)
.fontSize(25)
.fontWeight(FontWeight.Bold)
.onClick(() => {
router.pushUrl({
url: 'pages/RouteParamPage',
params: {
pageId : 'abc001'
}
})
})
页面B
export struct SecondPageDetailComponent {
@State routeParam: string = router.getParams()?.['pageId']
build() {
Column() {
Row() {
Image($r('app.media.ic_public_back'))
.width(24)
.height(24)
.margin({left:20, right: 20, top: 20, bottom: 20})
.align(Alignment.Start)
.onClick(() => {
router.back()
})
Text('路由参数')
.fontSize(30)
.fontWeight(400)
} .width('100%')
Text(this.routeParam)
.fontSize(20)
} .width('100%')
.height('100%')
}
}
UIAbility生命周期
UIAbility的启动模式
UIAbility当前支持singleton(单实例模式,也是默认的)、multiton(多实例模式)和specified(指定实例模式)3种启动模式。 启动模式在module.json5配文件中的launchType字段进行设置