色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙開發:啟動指定頁面

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-06-19 09:29 ? 次閱讀

啟動指定頁面

當PageAbility的啟動模式設置為單例時(具體設置方法和典型場景示例見[PageAbility的啟動模式],缺省情況下是單實例模式),若PageAbility已被拉起,再次啟動PageAbility會觸發onNewWant回調(即非首次拉起)。應用開發者可以通過want傳遞啟動參數,例如開發者希望指定頁面啟動PageAbility,可以通過want中的parameters參數傳遞pages信息,具體示例代碼如下: 開發前請熟悉鴻蒙開發指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

調用方PageAbility的app.ets中或者page中,使用startAbility再次拉起PageAbility,通過want中的uri參數傳遞頁面信息:

import featureAbility from '@ohos.ability.featureAbility';
import Want from '@ohos.app.ability.Want';
import hilog from '@ohos.hilog';

const TAG: string = 'PagePageAbilityFirst';
const domain: number = 0xFF00;
(async (): Promise< void > = > {
  let wantInfo: Want = {
    bundleName: 'com.samples.famodelabilitydevelop',
    abilityName: 'com.samples.famodelabilitydevelop.PageAbilitySingleton',
    parameters: { page: 'pages/second' }
  };
  featureAbility.startAbility({ want: wantInfo }).then((data) = > {
    hilog.debug(domain, TAG, `restartAbility success : ${data}`);
  });
})()

在目標端PageAbility的onNewWant回調中獲取包含頁面信息的want參數:

// GlobalContext.ts 構造單例對象
export class GlobalContext {
  private constructor() {
  }

  private static instance: GlobalContext;
  private _objects = new Map< string, Object >();

  public static getContext(): GlobalContext {
    if (!GlobalContext.instance) {
      GlobalContext.instance = new GlobalContext();
    }
    return GlobalContext.instance;
  }

  getObject(value: string): Object | undefined {
    return this._objects.get(value);
  }

  setObject(key: string, objectClass: Object): void {
    this._objects.set(key, objectClass);
  }
}
import Want from '@ohos.app.ability.Want';
import featureAbility from '@ohos.ability.featureAbility';
import { GlobalContext } from '../utils/GlobalContext';

class PageAbilitySingleton {
  onNewWant(want: Want) {
    featureAbility.getWant().then((want) = > {
      GlobalContext.getContext().setObject('newWant', want);
    })
  }
}

export default new PageAbilitySingleton();

在目標端頁面的自定義組件中獲取包含頁面信息的want參數并根據uri做路由處理:

import Want from '@ohos.app.ability.Want';
import router from '@ohos.router';
import { GlobalContext } from '../../utils/GlobalContext';

@Entry
@Component
struct First {
  onPageShow() {
    let newWant = GlobalContext.getContext().getObject('newWant') as Want;
    if (newWant) {
      if (newWant.parameters) {
        if (newWant.parameters.page) {
          router.pushUrl({ url: newWant.parameters.page as string});
          GlobalContext.getContext().setObject("newWant", undefined)
        }
      }
    }
  }

  build() {
    Column() {
      Row() {
        Text($r('app.string.singleton_first_title'))
          .fontSize(24)
          .fontWeight(FontWeight.Bold)
          .textAlign(TextAlign.Start)
          .margin({ top: 12, bottom: 11, right: 24, left: 24 })
      }
      .width('100%')
      .height(56)
      .justifyContent(FlexAlign.Start)

      Image($r('app.media.pic_empty'))
        .width(120)
        .height(120)
        .margin({ top: 224 })

      Text($r('app.string.no_content'))
        .fontSize(14)
        .margin({ top: 8, bottom: 317, right: 152, left: 152 })
        .fontColor($r('app.color.text_color'))
        .opacity(0.4)
    }
    .width('100%')
    .height('100%')
    .backgroundColor($r('app.color.backGrounding'))
  }
}

當PageAbility的啟動模式設置為多實例模式或為首次啟動單例模式的PageAbility時(具體設置方法和典型場景示例見[PageAbility的啟動模式]),在調用方PageAbility中,通過want中的parameters參數傳遞要啟動的指定頁面的pages信息,調用startAbility()方法啟動PageAbility。被調用方可以在onCreate中使用featureAbility的getWant方法獲取want,再通過調用router.pushUrl實現啟動指定頁面。

調用方的頁面中實現按鈕點擊觸發startAbility方法啟動目標端PageAbility,startAbility方法的入參want中攜帶指定頁面信息,示例代碼如下:

import featureAbility from '@ohos.ability.featureAbility';
import Want from '@ohos.app.ability.Want';
import { BusinessError } from '@ohos.base';
import fs from '@ohos.file.fs';
import promptAction from '@ohos.promptAction';
import worker from '@ohos.worker';
import hilog from '@ohos.hilog';

const TAG: string = 'PagePageAbilityFirst';
const domain: number = 0xFF00;

@Entry
@Component
struct PagePageAbilityFirst {
  build() {
    Column() {
      //...
      List({ initialIndex: 0 }) {
        //...
        ListItem() {
          Flex({ justifyContent: FlexAlign.SpaceBetween, alignContent: FlexAlign.Center }) {
          //...
          }
          .onClick(() = > {
            let want: Want = {
              bundleName: 'com.samples.famodelabilitydevelop',
              abilityName: 'com.samples.famodelabilitydevelop.PageAbilityStandard',
              parameters: { page: 'pages/first' }
            };
            featureAbility.startAbility({ want: want }).then((data) = > {
              hilog.info(domain, TAG, `startAbility finish:${data}`);
            }).catch((err: BusinessError) = > {
              hilog.info(domain, TAG, `startAbility failed errcode:${err.code}`);
            })
          })
        }
        //...
        ListItem() {
          Flex({ justifyContent: FlexAlign.SpaceBetween, alignContent: FlexAlign.Center }) {
          //...
          }
          .onClick(() = > {
            let want: Want = {
              bundleName: 'com.samples.famodelabilitydevelop',
              abilityName: 'com.samples.famodelabilitydevelop.PageAbilityStandard',
              parameters: { page: 'pages/second' }
            };
            featureAbility.startAbility({ want: want }).then((data) = > {
              hilog.info(domain, TAG, `startAbility finish:${data}`);
            }).catch((err: BusinessError) = > {
              hilog.info(domain, TAG, `startAbility failed errcode:${err.code}`);
            })
          })
        }
        //...
      }
      //...
    }
    //...
  }
}

`HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`

鴻蒙文檔.png

目標端PageAbility的onCreate生命周期回調中通過featureAbility的getWant方法獲取want,并對參數進行解析,實現指定頁面拉起:

import featureAbility from '@ohos.ability.featureAbility';
import router from '@ohos.router';

class PageAbilityStandard {
  onCreate() {
    featureAbility.getWant().then((want) = > {
      if (want.parameters) {
        if (want.parameters.page) {
          router.pushUrl({ url: want.parameters.page as string });
        }
      }
    })
  }
}

export default new PageAbilityStandard();

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鴻蒙
    +關注

    關注

    57

    文章

    2392

    瀏覽量

    42975
收藏 人收藏

    評論

    相關推薦

    鴻蒙OS開發:典型頁面場景【一次開發,多端部署】實戰(設置典型頁面

    本示例展示了設置應用的典型頁面,其在小窗口和大窗口有不同的顯示效果,體現一次開發、多端部署的能力。
    的頭像 發表于 05-27 09:36 ?1217次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發</b>:典型<b class='flag-5'>頁面</b>場景【一次<b class='flag-5'>開發</b>,多端部署】實戰(設置典型<b class='flag-5'>頁面</b>)

    鴻蒙Ability開發-Stage模型下Ability的創建和使用

    ) } ... } 使用windowStage.loadContent為指定Ability設置相關的Page頁面。 // DetailsAbility.ts ... export default class
    發表于 01-08 15:34

    純血鴻蒙開發教程-運行時動態加載頁面提升性能

    ,主頁內存占用增加,加載時間變長。此時改用動態加載不再提前加載子頁面,可以有效地避免這些任務阻塞主線程,從而降低整體資源消耗,提高主頁的加載速度。 最后 如果大家覺得這篇內容對學習鴻蒙開發有幫助,我想
    發表于 05-10 20:52

    鴻蒙原生頁面高性能解決方案上線OpenHarmony社區 助力打造高性能原生應用

    NEXT的原生頁面高性能解決方案,從頁面滑動、跳轉及應用冷啟動等關鍵環節,為開發者提供全面的支持。目前,這些解決方案均已上線OpenHarmony開源社區,可在OpenHarmony
    發表于 01-02 18:00

    鴻蒙OS應用開發實踐(三)

    ;com.qibiao.harmonyosdemo.NewPage") .build();這串代碼指定了我們要跳轉的目標頁面,需要指定目標的包名,還有Ability名稱(非slice)。最后使用startAbility()接口
    發表于 12-03 21:54

    鴻蒙OS應用開發實踐(三)

    簡單的鴻蒙交互程序:從一個頁面跳轉到另一個頁面。 (一)創建工程先創建一個新的TV的empty java工程:點finish后,發現這次從創建到項目環境加載完成,用了很短的時間,這是因為初始環境需要
    發表于 12-04 08:54

    鴻蒙應用開發入門資料合集

    系統中的HiLog日志工具的具體使用方法。5、鴻蒙應用開發入門資料五:頁面間跳轉認識IntentIntent是對象之間傳遞信息的載體。例如,當一個Ability需要啟動另一個Abili
    發表于 03-22 11:23

    鴻蒙原生應用開發-關于頁面接口router返回問題與解決思路

    一、模塊導入 import router from \'@ohos.router\' 提供通過不同的url訪問不同的頁面,包括跳轉到應用內的指定頁面、用應用內的某個頁面替換當前
    發表于 11-15 10:11

    米哈游宣布啟動鴻蒙原生應用開發

    12月18日,米哈游宣布將基于HarmonyOS NEXT啟動鴻蒙原生應用開發,成為又一家啟動鴻蒙原生應用
    的頭像 發表于 12-18 10:07 ?528次閱讀

    京東正式啟動鴻蒙原生應用開發

    華為與京東于近日宣布達成一項重要合作,正式啟動鴻蒙原生應用開發。這一合作旨在利用HarmonyOS NEXT的獨特優勢,為消費者提供更出色的購物體驗。
    的頭像 發表于 01-18 15:02 ?813次閱讀

    多家頭部企業宣布「啟動鴻蒙原生應用開發」,你看好鴻蒙系統走向「獨立」嗎?

    鴻蒙生態迎「關鍵一戰」,多家頭部企業宣布「啟動鴻蒙原生應用開發」,你看好鴻蒙系統走向「獨立」嗎?
    的頭像 發表于 01-24 11:47 ?610次閱讀
    多家頭部企業宣布「<b class='flag-5'>啟動</b><b class='flag-5'>鴻蒙</b>原生應用<b class='flag-5'>開發</b>」,你看好<b class='flag-5'>鴻蒙</b>系統走向「獨立」嗎?

    淘寶正式啟動華為鴻蒙原生應用開發

    華為與淘寶近日宣布,淘寶已正式啟動鴻蒙原生應用開發。這一合作標志著鴻蒙生態在電商領域的布局進一步擴大,將為用戶帶來全新的全場景購物體驗。
    的頭像 發表于 01-26 15:59 ?820次閱讀

    淘寶與華為合作將基于HarmonyOS NEXT啟動鴻蒙原生應用開發

    1月25日,淘寶與華為舉辦鴻蒙合作簽約儀式,宣布將基于HarmonyOS NEXT啟動鴻蒙原生應用開發
    的頭像 發表于 01-26 16:14 ?1177次閱讀

    哪吒汽車APP啟動鴻蒙原生應用開發

    哪吒汽車正式簽約,啟動鴻蒙原生應用開發;在5月17日,在上海市經濟和信息化委員會指導的“千帆競發啟航 共筑鴻蒙生態——HDD上海站·鴻蒙原生
    的頭像 發表于 05-18 09:48 ?1207次閱讀

    鴻蒙開發:【頁面棧及任務鏈】

    單個UIAbility組件可以實現多個頁面,并在多個頁面之間跳轉,這種UIAbility組件內部的頁面跳轉關系稱為“頁面棧”,由ArkUI框架統一管理,如下圖中的UIAbility1
    的頭像 發表于 06-14 10:10 ?474次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>:【<b class='flag-5'>頁面</b>棧及任務鏈】
    主站蜘蛛池模板: 国产午夜精品AV一区二区麻豆 | 欧美亚洲另类图片 | 无限资源在线观看高清 | 久久丫线这里只精品 | 两个人的视频hd全免费 | 国产在线精品亚洲观看不卡欧美 | 午夜福利免费0948视频 | 乱辈通奷XXXXXHD猛交 | 我的好妈妈8高清在线观看WWW | 亚洲AV永久无码精品澳门 | 亚洲 欧美 日韩 国产 视频 | 亚洲另类中文字幕 | 强奷乱码欧妇女中文字幕熟女 | 好男人视频免费高清在线观看www | 色小妹影院 | 久久精品综合网中文字幕 | 日韩欧美精品有码在线播放 | 帅小伙和警官同性3p | 十8禁用B站在线看漫画 | 欧美一区二区视频高清专区 | 国产精品ⅴ视频免费观看 | 成人欧美一区二区三区白人 | 久久re这里视频精品15 | 国产一区二区在线免费观看 | 向日葵视频app下载18岁以下勿看 | www红色一片 | 天天躁日日躁狠狠躁AV麻豆 | 偷拍亚洲制服另类无码专区 | 性一交一乱一色一视频 | 快穿之诱受双性被灌满h | 欧美一区二区三区男同 | 妹妹的第一次有点紧 | 国产精品…在线观看 | 精品亚洲国产成AV人片传媒 | 琪琪see色原网站在线观看 | 国产午夜在线观看视频播放 | 秋霞伦理机在线看片 | 在线 国产 欧美 专区 | JAVAPARSER丰满白老师 | 国产精品久久久久a影院 | 国产三级精品三级在线观看 |