admin 发表于 2023-2-10 07:21:45

鸿蒙OS系统中要怎么实现页面跳转?

<div class="markdown-body editormd-preview-container">
                              <p>
  鸿蒙OS系统中要怎么实现页面跳转?鸿蒙系统作为一个开源的免费系统,目前已经开始内部测试使用了。而对于开发人员来说,想要了解鸿蒙的页面跳转方法,下面小编就为大家讲解一下吧!
</p>
<p style="text-align: center;">
<ahref="https://www.downkr.com/uploadfile/2021/0729/202109291009501.png"></a>
</p>
<p>
<strong>  操作方法:</strong>
</p>
<p>
  ①不同 Slice 间跳转,同一个 Ability 中,优点是方便,高效,缺点是业务逻辑复杂度受限。
</p>
<p>
  button.setClickedListener(
</p>
<p>
  listener -> present(new SecondAbilitySlice(), new Intent()));
</p>
<p>
  ②使用 Intent 借助于 ElementName,最常用的页面跳转方式,方便传递参数以及实现相对复杂的业务逻辑交互。
</p>
<p>
  ElementName elementName = new ElementName(&hellip;&hellip;);
</p>
<p>
  intent.setElement(elementName);
</p>
<p>
  intent.setParam(&hellip;&hellip;);
</p>
<p>
  startAbility(intent);
</p>
<p>
  ③借助于 Operation,可实现跨应用页面跳转。
</p>
<p>
  Intent intent = new Intent();
</p>
<p>
  Operation operation = new Intent.OperationBuilder()
</p>
<p>
  .withDeviceId(&ldquo;&rdquo;)
</p>
<p>
  .withBundleName(&ldquo;com.demoapp&rdquo;)
</p>
<p>
  .withAbilityName(&ldquo;com.demoapp.FooAbility&rdquo;)
</p>
<p>
  .build(); intent.setOperation(operation);
</p>
<p>
  startAbility(intent);
</p>
<p>
  ④Rout 路由(JS),调用 router.push() 接口将 uri 指定的页面添加到路由栈中,即跳转到 uri 指定的页面。在调用 router 方法之前,需要导入 router 模块。
</p>
<p>
  调用 router.push() 路由到详情页:
</p>
<p>
  // index.js
</p>
<p>
  import router from &lsquo;@system.router&rsquo;;
</p>
<p>
  export default {
</p>
<p>
  launch() {
</p>
<p>
  router.push ({
</p>
<p>
  uri: &lsquo;pages/detail/detail&rsquo;, }); },}
</p>
<p>
  调用 router.back() 回到首页:
</p>
<p>
  // detail.js
</p>
<p>
  import router from &lsquo;@system.router&rsquo;;
</p>
<p>
  export default {
</p>
<p>
  launch() {
</p>
<p>
  router.back(); },}
</p>
<p>
  ⑤通过迁移实现分布式设备间页面传递(有请求迁移和请求回迁两种操作)。
</p>
<p>
  1)需实现 IAbilityContinuation 接口
</p>
<p>
  2)需要权限:
</p>
<p>
  ohos.permission.GET_DISTRIBUTED_DEVICE_INFO:用于允许获取分布式组网内的设备列表和设备信息
</p>
<p>
  ohos.permission.DISTRIBUTED_DATASYNC:用于允许不同设备间的数据交换ohos.permission.DISTRIBUTED_DEVICE_STATE_CHANGE:用于允许监听分布式组网内的设备状态变化
</p>
<p>
  ohos.permission.READ_USER_STORAGE:读取存储卡中的内容
</p>
<p>
  ohos.permission.WRITE_USER_STORAGE:修改或删除存储卡中的内容
</p>
<p>
  ohos.permission.GET_BUNDLE_INFO:用于查询其他应用的信息
</p>
<p>
  ohos.permission.servicebus.ACCESS_SERVICE:分布式数据传输的权限
</p>
<p>
  com.huawei.hwddmp.servicebus.BIND_SERVICE:系统应用使用权限
</p>
<p>
  3)需要获取分布式设备 ID(NetworkID)
</p>
<p>
  核心服务类:IContinuationRegisterManager。
</p>
<p>
  服务类的常用 API 方法:
</p>
<p>
  getContinuationRegisterManager();获取服务类的对象
</p>
<p>
  register();注册服务
</p>
<p>
  showDeviceList();获取设备列表
</p>
<p>
  unregister();注销服务
</p>
<p>
  4)请求迁移关键步骤(假定设备 A 向设备 B 迁移)
</p>
<p>
  如下:
</p>
<p>
  需要迁移的 page 实现 IAbilityContinuation 接口
</p>
<p>
  复写 onStartContinuation() 方法,做迁移前的准备工作
</p>
<p>
  复写 onSaveData()方法,保存迁移数据
</p>
<p>
  在设备 B 上复写 onRestoreData() 方法,恢复迁移数据
</p>
<p>
  在设备 A 上复写 onCompleteContinuation() 方法,做迁移后的收尾工作
</p>
<p>
  调用 continueAbility() 或 continueAbilityReversibly() 发起迁移
</p>
<p>
  5)请求回迁需在设备 A 上调用 reverseContinueAbility() 请求回迁
</p>
<p>
  以下关键步骤类似 4)。
</p>
                            </div>
页: [1]
查看完整版本: 鸿蒙OS系统中要怎么实现页面跳转?