没有合适的资源?快使用搜索试试~ 我知道了~
鸿蒙应用开发 应用程序入口 UIAbility使用.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 183 浏览量
2023-12-05
23:30:22
上传
评论
收藏 2.45MB DOCX 举报
温馨提示
试读
29页
鸿蒙应用开发 应用程序入口 UIAbility使用.docx
资源推荐
资源详情
资源评论
鸿蒙应用开发 应用程序入口 UIAbility 使用
UIAbility 概述
UIAbility 是一种包含用户界面的应用组件,主要用于和用户进行交互。UIAbility
也是系统调度的单元,为应用提供窗口在其中绘制界面。
每一个 UIAbility 实例,都对应于一个最近任务列表中的任务。
一个应用可以有一个 UIAbility,也可以有多个 UIAbility,如下图所示。例如浏览
器应用可以通过一个 UIAbility 结合多页面的形式让用户进行的搜索和浏览内容;
而聊天应用增加一个“外卖功能”的场景,则可以将聊天应用中“外卖功能”的内容
独立为一个 UIAbility,当用户打开聊天应用的“外卖功能”,查看外卖订单详情,
此时有新的聊天消息,即可以通过最近任务列表切换回到聊天窗口继续进行聊天
对话。
一个 UIAbility 可以对应于多个页面,建议将一个独立的功能模块放到一个
UIAbility 中,以多页面的形式呈现。例如新闻应用在浏览内容的时候,可以进行
多页面的跳转使用。
图 1 单 UIAbility 应用和多 UIAbility 应用
UIAbility 内页面的跳转和数据传递
UIAbility 的数据传递包括有 UIAbility 内页面的跳转和数据传递、UIAbility 间的
数据跳转和数据传递,本章节主要讲解 UIAbility 内页面的跳转和数据传递。
在一个应用包含一个 UIAbility 的场景下,可以通过新建多个页面来实现和丰富
应用的内容。这会涉及到 UIAbility 内页面的新建以及 UIAbility 内页面的跳转和
数据传递。
打开 DevEco Studio,选择一个 Empty Ability 工程模板,创建一个工程,例如命
名为 MyApplication。
� 在 src/main/ets/entryability 目录下,初始会生成一个 UIAbility 文件 EntryAbility.ts。
可以在 EntryAbility.ts 文件中根据业务需要实现 UIAbility 的生命周期回调内容。
� 在 src/main/ets/pages 目录下,会生成一个 Index 页面。这也是基于 UIAbility 实
现的应用的入口页面。可以在 Index 页面中根据业务需要实现入口页面的功能。
� 在 src/main/ets/pages 目录下,右键 New->Page,新建一个 Second 页面,用于实
现页面间的跳转和数据传递。
为了实现页面的跳转和数据传递,需要新建一个页面。在原有 Index 页面的基
础上,新建一个页面,例如命名为 Second.ets。
页面间的导航可以通过页面路由 router 模块来实现。页面路由模块根据页面
url 找到目标页面,从而实现跳转。通过页面路由模块,可以使用不同的 url 访
问不同的页面,包括跳转到 UIAbility 内的指定页面、用 UIAbility 内的某个页面
替换当前页面、返回上一页面或指定的页面等。具体使用方法请参见 ohos.router
(页面路由)。
页面跳转和参数接收
在使用页面路由之前,需要先导入 router 模块,如下代码所示。
import router from '@ohos.router';
页面跳转的几种方式,根据需要选择一种方式跳转即可。
�
方式一:API9 及以上,router.pushUrl()方法新增了 mode 参数,可以将 mode
参 数 配 置 为 router.RouterMode.Single 单 实 例 模 式 和
router.RouterMode.Standard 多实例模式。
�
在单实例模式下:如果目标页面的 url 在页面栈中已经存在同 url 页面,离栈
顶最近同 url 页面会被移动到栈顶,移动后的页面为新建页,原来的页面仍然存
在栈中,页面栈的元素数量不变;如果目标页面的 url 在页面栈中不存在同 url
页面,按多实例模式跳转,页面栈的元素数量会加 1。
�
说明:当页面栈的元素数量较大或者超过 32 时,可以通过调用
router.clear()方法清除页面栈中的所有历史页面,仅保留当前页
面作为栈顶页面。
�
router.pushUrl({
url: 'pages/Second',
params: {
src: 'Index 页面传来的数据',
}
}, router.RouterMode.Single)
�
�
方式二:API9 及以上,router.replaceUrl()方法新增了 mode 参数,可以将 mode
参 数 配 置 为 router.RouterMode.Single 单 实 例 模 式 和
router.RouterMode.Standard 多实例模式。
�
在单实例模式下:如果目标页面的 url 在页面栈中已经存在同 url 页面,离栈
顶最近同 url 页面会被移动到栈顶,替换当前页面,并销毁被替换的当前页面,
移动后的页面为新建页,页面栈的元素数量会减 1;如果目标页面的 url 在页
面栈中不存在同 url 页面,按多实例模式跳转,页面栈的元素数量不变。
�
router.replaceUrl({
url: 'pages/Second',
params: {
src: 'Index 页面传来的数据',
}
}, router.RouterMode.Single)
�
已经实现了页面的跳转,接下来,在 Second 页面中如何进行自定义参数的接收
呢?
通过调用 router.getParams()方法获取 Index 页面传递过来的自定义参数。
import router from '@ohos.router';
@Entry
@Component
struct Second {
@State src: string = (router.getParams() as Record<string, string>)['src'];
// 页面刷新展示
...
}
效果示意如下图所示。在 Index 页面中,点击“Next”后,即可从 Index 页面跳
转到 Second 页面,并在 Second 页面中接收参数和进行页面刷新展示。
图 2 Index 页面跳转到 Second 页面
剩余28页未读,继续阅读
资源评论
jane9872
- 粉丝: 106
- 资源: 7760
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功