国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

HarmonyOS/OpenHarmony應(yīng)用開(kāi)發(fā)-Stage模型UIAbility組件使用(六)

這篇具有很好參考價(jià)值的文章主要介紹了HarmonyOS/OpenHarmony應(yīng)用開(kāi)發(fā)-Stage模型UIAbility組件使用(六)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

UIAbility組件間交互(設(shè)備內(nèi))

UIAbility是系統(tǒng)調(diào)度的最小單元。在設(shè)備內(nèi)的功能模塊之間跳轉(zhuǎn)時(shí),會(huì)涉及到啟動(dòng)特定的UIAbility,該UIAbility可以是應(yīng)用內(nèi)的其他UIAbility,也可以是其他應(yīng)用的UIAbility(例如啟動(dòng)三方支付UIAbility)。

本文將從如下場(chǎng)景分別介紹設(shè)備內(nèi)UIAbility間的交互方式。

啟動(dòng)應(yīng)用內(nèi)的UIAbility。啟動(dòng)應(yīng)用內(nèi)的UIAbility并獲取返回結(jié)果。啟動(dòng)其他應(yīng)用的UIAbility。啟動(dòng)其他應(yīng)用的UIAbility并獲取返回結(jié)果。啟動(dòng)UIAbility的指定頁(yè)面。通過(guò)Call調(diào)用實(shí)現(xiàn)UIAbility交互(僅對(duì)系統(tǒng)應(yīng)用開(kāi)放)。

四、啟動(dòng)其他應(yīng)用的UIAbility并獲取返回結(jié)果

當(dāng)使用隱式Want啟動(dòng)其他應(yīng)用的UIAbility并希望獲取返回結(jié)果時(shí),調(diào)用方需要使用startAbilityForResult()方法啟動(dòng)目標(biāo)UIAbility。例如主應(yīng)用中需要啟動(dòng)三方支付并獲取支付結(jié)果。

1.在支付應(yīng)用對(duì)應(yīng)UIAbility的module.json5配置文件中,配置skills的entities字段和actions字段。

{
  "module": {
    "abilities": [
      {
        // ...
        "skills": [
          {
            "entities": [
              // ...
              "entity.system.default"
            ],
            "actions": [
              // ...
              "ohos.want.action.editData"
            ]
          }
        ]
      }
    ]
  }
}

2.調(diào)用方使用startAbilityForResult()方法啟動(dòng)支付應(yīng)用的UIAbility,在調(diào)用方want參數(shù)中的entities和action需要被包含在待匹配UIAbility的skills配置的entities和actions中。異步回調(diào)中的data用于后續(xù)接收支付UIAbility停止自身后返回給調(diào)用方的信息。系統(tǒng)匹配到符合entities和actions參數(shù)條件的UIAbility后,會(huì)彈出選擇框展示匹配到的UIAbility實(shí)例列表供用戶選擇使用。

let wantInfo = {
    deviceId: '', // deviceId為空表示本設(shè)備
    // uncomment line below if wish to implicitly query only in the specific bundle.
    // bundleName: 'com.example.myapplication',
    action: 'ohos.want.action.editData',
    // entities can be omitted.
    entities: ['entity.system.default'],
}

// context為調(diào)用方UIAbility的AbilityContext
this.context.startAbilityForResult(wantInfo).then((data) => {
    // ...
}).catch((err) => {
    // ...
})

3.在支付UIAbility完成支付之后,需要調(diào)用terminateSelfWithResult()方法實(shí)現(xiàn)停止自身,并將abilityResult參數(shù)信息返回給調(diào)用方。

const RESULT_CODE: number = 1001;
let abilityResult = {
    resultCode: RESULT_CODE,
    want: {
        bundleName: 'com.example.myapplication',
        abilityName: 'EntryAbility',
        moduleName: 'entry',
        parameters: {
            payResult: 'OKay',
        },
    },
}
// context為被調(diào)用方UIAbility的AbilityContext
this.context.terminateSelfWithResult(abilityResult, (err) => {
    // ...
});

3.在調(diào)用方startAbilityForResult()方法回調(diào)中接收支付應(yīng)用返回的信息,RESULT_CODE需要與前面terminateSelfWithResult()返回的數(shù)值保持一致

const RESULT_CODE: number = 1001;

let want = {
  // Want參數(shù)信息
};

// context為調(diào)用方UIAbility的AbilityContext
this.context.startAbilityForResult(want).then((data) => {
    if (data?.resultCode === RESULT_CODE) {
        // 解析被調(diào)用方UIAbility返回的信息
        let payResult = data.want?.parameters?.payResult;
        // ...
    }
}).catch((err) => {
    // ...
})

五、啟動(dòng)UIAbility的指定頁(yè)面

一個(gè)UIAbility可以對(duì)應(yīng)多個(gè)頁(yè)面,在不同的場(chǎng)景下啟動(dòng)該UIAbility時(shí)需要展示不同的頁(yè)面,例如從一個(gè)UIAbility的頁(yè)面中跳轉(zhuǎn)到另外一個(gè)UIAbility時(shí),希望啟動(dòng)目標(biāo)UIAbility的指定頁(yè)面。本文主要講解目標(biāo)UIAbility首次啟動(dòng)和目標(biāo)UIAbility非首次啟動(dòng)兩種啟動(dòng)指定頁(yè)面的場(chǎng)景,以及在講解啟動(dòng)指定頁(yè)面之前會(huì)講解到在調(diào)用方如何指定啟動(dòng)頁(yè)面。

一)調(diào)用方UIAbility指定啟動(dòng)頁(yè)面

調(diào)用方UIAbility啟動(dòng)另外一個(gè)UIAbility時(shí),通常需要跳轉(zhuǎn)到指定的頁(yè)面。例如FuncAbility包含兩個(gè)頁(yè)面(Index對(duì)應(yīng)首頁(yè),Second對(duì)應(yīng)功能A頁(yè)面),此時(shí)需要在傳入的want參數(shù)中配置指定的頁(yè)面路徑信息,可以通過(guò)want中的parameters參數(shù)增加一個(gè)自定義參數(shù)傳遞頁(yè)面跳轉(zhuǎn)信息。示例中的context的獲取方式參見(jiàn)獲取UIAbility的Context屬性。

let wantInfo = {
    deviceId: '', // deviceId為空表示本設(shè)備
    bundleName: 'com.example.myapplication',
    abilityName: 'FuncAbility',
    moduleName: 'module1', // moduleName非必選
    parameters: { // 自定義參數(shù)傳遞頁(yè)面信息
        router: 'funcA',
    },
}
// context為調(diào)用方UIAbility的AbilityContext
this.context.startAbility(wantInfo).then(() => {
    // ...
}).catch((err) => {
    // ...
})

二)目標(biāo)UIAbility首次啟動(dòng)

目標(biāo)UIAbility首次啟動(dòng)時(shí),在目標(biāo)UIAbility的onWindowStageCreate()生命周期回調(diào)中,解析EntryAbility傳遞過(guò)來(lái)的want參數(shù),獲取到需要加載的頁(yè)面信息url,傳入windowStage.loadContent()方法。

import UIAbility from '@ohos.app.ability.UIAbility'
import Window from '@ohos.window'

export default class FuncAbility extends UIAbility {
    funcAbilityWant;

    onCreate(want, launchParam) {
        // 接收調(diào)用方UIAbility傳過(guò)來(lái)的參數(shù)
        this.funcAbilityWant = want;
    }

    onWindowStageCreate(windowStage: Window.WindowStage) {
        // Main window is created, set main page for this ability
        let url = 'pages/Index';
        if (this.funcAbilityWant?.parameters?.router) {
            if (this.funcAbilityWant.parameters.router === 'funA') {
                url = 'pages/Second';
            }
        }
        windowStage.loadContent(url, (err, data) => {
            // ...
        });
    }
}

三)目標(biāo)UIAbility非首次啟動(dòng)

經(jīng)常還會(huì)遇到一類場(chǎng)景,當(dāng)應(yīng)用A已經(jīng)啟動(dòng)且處于主頁(yè)面時(shí),回到桌面,打開(kāi)應(yīng)用B,并從應(yīng)用B再次啟動(dòng)應(yīng)用A,且需要跳轉(zhuǎn)到應(yīng)用A的指定頁(yè)面。例如聯(lián)系人應(yīng)用和短信應(yīng)用配合使用的場(chǎng)景。打開(kāi)短信應(yīng)用主頁(yè),回到桌面,此時(shí)短信應(yīng)用處于已打開(kāi)狀態(tài)且當(dāng)前處于短信應(yīng)用的主頁(yè)。再打開(kāi)聯(lián)系人應(yīng)用主頁(yè),進(jìn)入聯(lián)系人用戶A查看詳情,點(diǎn)擊短信圖標(biāo),準(zhǔn)備給用戶A發(fā)送短信,此時(shí)會(huì)再次拉起短信應(yīng)用且當(dāng)前處于短信應(yīng)用的發(fā)送頁(yè)面。

HarmonyOS/OpenHarmony應(yīng)用開(kāi)發(fā)-Stage模型UIAbility組件使用(六),HarmonyOS/OpenHarmony開(kāi)發(fā)學(xué)習(xí)分享,HarmonyOS

針對(duì)以上場(chǎng)景,即當(dāng)應(yīng)用A的UIAbility實(shí)例已創(chuàng)建,并且處于該UIAbility實(shí)例對(duì)應(yīng)的主頁(yè)面中,此時(shí),從應(yīng)用B中需要再次啟動(dòng)應(yīng)用A的該UIAbility,并且需要跳轉(zhuǎn)到不同的頁(yè)面,這種情況下要如何實(shí)現(xiàn)呢?

1.在目標(biāo)UIAbility中,默認(rèn)加載的是Index頁(yè)面。由于當(dāng)前UIAbility實(shí)例之前已經(jīng)創(chuàng)建完成,此時(shí)會(huì)進(jìn)入U(xiǎn)IAbility的onNewWant()回調(diào)中且不會(huì)進(jìn)入onCreate()和onWindowStageCreate()生命周期回調(diào),在onNewWant()回調(diào)中解析調(diào)用方傳遞過(guò)來(lái)的want參數(shù),并掛在到全局變量globalThis中,以便于后續(xù)在頁(yè)面中獲取。

import UIAbility from '@ohos.app.ability.UIAbility'

export default class FuncAbility extends UIAbility {
    onNewWant(want, launchParam) {
        // 接收調(diào)用方UIAbility傳過(guò)來(lái)的參數(shù)
        globalThis.funcAbilityWant = want;
        // ...
    }
}

2.在FuncAbility中,此時(shí)需要在Index頁(yè)面中通過(guò)頁(yè)面路由Router模塊實(shí)現(xiàn)指定頁(yè)面的跳轉(zhuǎn),由于此時(shí)FuncAbility對(duì)應(yīng)的Index頁(yè)面是處于激活狀態(tài),不會(huì)重新變量聲明以及進(jìn)入aboutToAppear()生命周期回調(diào)中。因此可以在Index頁(yè)面的onPageShow()生命周期回調(diào)中實(shí)現(xiàn)頁(yè)面路由跳轉(zhuǎn)的功能。

import router from '@ohos.router';

@Entry
@Component
struct Index {
  onPageShow() {
    let funcAbilityWant = globalThis.funcAbilityWant;
    let url2 = funcAbilityWant?.parameters?.router;
    if (url2 && url2 === 'funcA') {
      router.replaceUrl({
        url: 'pages/Second',
      })
    }
  }

  // 頁(yè)面展示
  build() {
    // ...
  }
}

說(shuō)明當(dāng)被調(diào)用方Ability的啟動(dòng)模式設(shè)置為standard啟動(dòng)模式時(shí),每次啟動(dòng)都會(huì)創(chuàng)建一個(gè)新的實(shí)例,那么onNewWant()回調(diào)就不會(huì)被用到。

六、通過(guò)Call調(diào)用實(shí)現(xiàn)UIAbility交互(僅對(duì)系統(tǒng)應(yīng)用開(kāi)放)

Call調(diào)用是UIAbility能力的擴(kuò)展,它為UIAbility提供一種能夠被外部調(diào)用并與外部進(jìn)行通信的能力。Call調(diào)用支持前臺(tái)與后臺(tái)兩種啟動(dòng)方式,使UIAbility既能被拉起到前臺(tái)展示UI,也可以在后臺(tái)被創(chuàng)建并運(yùn)行。Call調(diào)用在調(diào)用方與被調(diào)用方間建立了IPC通信,因此應(yīng)用開(kāi)發(fā)者可通過(guò)Call調(diào)用實(shí)現(xiàn)不同Ability之間的數(shù)據(jù)共享。

Call調(diào)用的核心接口是startAbilityByCall方法,與startAbility接口的不同之處在于:

startAbilityByCall支持前臺(tái)與后臺(tái)兩種啟動(dòng)方式,而startAbility僅支持前臺(tái)啟動(dòng)。調(diào)用方可使用startAbilityByCall所返回的Caller對(duì)象與被調(diào)用方進(jìn)行通信,而startAbilty不具備通信能力。

Call調(diào)用的使用場(chǎng)景主要包括:

需要與被啟動(dòng)的UIAbility進(jìn)行通信。希望被啟動(dòng)的UIAbility在后臺(tái)運(yùn)行。

表1?Call調(diào)用相關(guān)名詞解釋

名詞

描述

CallerAbility

進(jìn)行Call調(diào)用的UIAbility(調(diào)用方)。

CalleeAbility

被Call調(diào)用的UIAbility(被調(diào)用方)。

Caller

實(shí)際對(duì)象,由startAbilityByCall接口返回,CallerAbility可使用Caller與CalleeAbility進(jìn)行通信。

Callee

實(shí)際對(duì)象,被CalleeAbility持有,可與Caller進(jìn)行通信。

Call調(diào)用示意圖如下所示。

圖1?Call調(diào)用示意圖

HarmonyOS/OpenHarmony應(yīng)用開(kāi)發(fā)-Stage模型UIAbility組件使用(六),HarmonyOS/OpenHarmony開(kāi)發(fā)學(xué)習(xí)分享,HarmonyOS

CallerAbility調(diào)用startAbilityByCall接口獲取Caller,并使用Caller對(duì)象的call方法向CalleeAbility發(fā)送數(shù)據(jù)。

CalleeAbility持有一個(gè)Callee對(duì)象,通過(guò)Callee的on方法注冊(cè)回調(diào)函數(shù),當(dāng)接收到Caller發(fā)送的數(shù)據(jù)時(shí)將會(huì)調(diào)用對(duì)應(yīng)的回調(diào)函數(shù)。

說(shuō)明當(dāng)前僅支持系統(tǒng)應(yīng)用使用Call調(diào)用。CalleeAbility的啟動(dòng)模式需要為單實(shí)例。Call調(diào)用既支持本地(設(shè)備內(nèi))Call調(diào)用,也支持跨設(shè)備Call調(diào)用,下面介紹設(shè)備內(nèi)Call調(diào)用方法。

一)接口說(shuō)明

Call功能主要接口如下表所示。具體的API詳見(jiàn)接口文檔。

表2?Call功能主要接口

接口名

描述

startAbilityByCall(want: Want): Promise<Caller>

啟動(dòng)指定UIAbility并獲取其Caller通信接口,默認(rèn)為后臺(tái)啟動(dòng),通過(guò)配置want可實(shí)現(xiàn)前臺(tái)啟動(dòng),詳見(jiàn)接口文檔。AbilityContext與ServiceExtensionContext均支持該接口。

on(method: string, callback: CalleeCallBack): void

通用組件Callee注冊(cè)method對(duì)應(yīng)的callback方法。

off(method: string): void

通用組件Callee解注冊(cè)method的callback方法。

call(method: string, data: rpc.Parcelable): Promise<void>

向通用組件Callee發(fā)送約定序列化數(shù)據(jù)。

callWithResult(method: string, data: rpc.Parcelable): Promise<rpc.MessageSequence>

向通用組件Callee發(fā)送約定序列化數(shù)據(jù), 并將Callee返回的約定序列化數(shù)據(jù)帶回。

release(): void

釋放通用組件的Caller通信接口。

on(type: "release", callback: OnReleaseCallback): void

注冊(cè)通用組件通信斷開(kāi)監(jiān)聽(tīng)通知。

設(shè)備內(nèi)通過(guò)Call調(diào)用實(shí)現(xiàn)UIAbility交互,涉及如下兩部分開(kāi)發(fā):創(chuàng)建Callee被調(diào)用端。訪問(wèn)Callee被調(diào)用端。

二)開(kāi)發(fā)步驟(創(chuàng)建Callee被調(diào)用端)

在Callee被調(diào)用端,需要實(shí)現(xiàn)指定方法的數(shù)據(jù)接收回調(diào)函數(shù)、數(shù)據(jù)的序列化及反序列化方法。在需要接收數(shù)據(jù)期間,通過(guò)on接口注冊(cè)監(jiān)聽(tīng),無(wú)需接收數(shù)據(jù)時(shí)通過(guò)off接口解除監(jiān)聽(tīng)。

1.配置Ability的啟動(dòng)模式。

配置module.json5,將CalleeAbility配置為單實(shí)例"singleton"。

Json字段

字段說(shuō)明

"launchType"

Ability的啟動(dòng)模式,設(shè)置為"singleton"類型。

Ability配置標(biāo)簽示例如下:

"abilities":[{
  "name": ".CalleeAbility",
  "srcEntrance": "./ets/CalleeAbility/CalleeAbility.ts",
  "launchType": "singleton",
  "description": "$string:CalleeAbility_desc",
  "icon": "$media:icon",
  "label": "$string:CalleeAbility_label",
  "visible": true
}]

2.導(dǎo)入U(xiǎn)IAbility模塊。

import Ability from '@ohos.app.ability.UIAbility';

3.定義約定的序列化數(shù)據(jù)。

調(diào)用端及被調(diào)用端發(fā)送接收的數(shù)據(jù)格式需協(xié)商一致,如下示例約定數(shù)據(jù)由number和string組成。

export default class MyParcelable {
    num: number = 0
    str: string = ""

    constructor(num, string) {
        this.num = num
        this.str = string
    }

    marshalling(messageSequence) {
        messageSequence.writeInt(this.num)
        messageSequence.writeString(this.str)
        return true
    }

    unmarshalling(messageSequence) {
        this.num = messageSequence.readInt()
        this.str = messageSequence.readString()
        return true
    }
}

4.實(shí)現(xiàn)Callee.on監(jiān)聽(tīng)及Callee.off解除監(jiān)聽(tīng)。

被調(diào)用端Callee的監(jiān)聽(tīng)函數(shù)注冊(cè)時(shí)機(jī),取決于應(yīng)用開(kāi)發(fā)者。注冊(cè)監(jiān)聽(tīng)之前的數(shù)據(jù)不會(huì)被處理,取消監(jiān)聽(tīng)之后的數(shù)據(jù)不會(huì)被處理。如下示例在Ability的onCreate注冊(cè)'MSG_SEND_METHOD'監(jiān)聽(tīng),在onDestroy取消監(jiān)聽(tīng),收到序列化數(shù)據(jù)后作相應(yīng)處理并返回,應(yīng)用開(kāi)發(fā)者根據(jù)實(shí)際需要做相應(yīng)處理。具體示例代碼如下:

const TAG: string = '[CalleeAbility]';
const MSG_SEND_METHOD: string = 'CallSendMsg';

function sendMsgCallback(data) {
    console.info('CalleeSortFunc called');

    // 獲取Caller發(fā)送的序列化數(shù)據(jù)
    let receivedData = new MyParcelable(0, '');
    data.readParcelable(receivedData);
    console.info(`receiveData[${receivedData.num}, ${receivedData.str}]`);

    // 作相應(yīng)處理
    // 返回序列化數(shù)據(jù)result給Caller
    return new MyParcelable(receivedData.num + 1, `send ${receivedData.str} succeed`);
}

export default class CalleeAbility extends Ability {
    onCreate(want, launchParam) {
        try {
            this.callee.on(MSG_SEND_METHOD, sendMsgCallback);
        } catch (error) {
            console.info(`${MSG_SEND_METHOD} register failed with error ${JSON.stringify(error)}`);
        }
    }

    onDestroy() {
        try {
            this.callee.off(MSG_SEND_METHOD);
        } catch (error) {
            console.error(TAG, `${MSG_SEND_METHOD} unregister failed with error ${JSON.stringify(error)}`);
        }
    }
}復(fù)制復(fù)制

(三)開(kāi)發(fā)步驟(訪問(wèn)Callee被調(diào)用端)

1.導(dǎo)入U(xiǎn)IAbility模塊。

import Ability from '@ohos.app.ability.UIAbility';

2.獲取Caller通信接口。

Ability的context屬性實(shí)現(xiàn)了startAbilityByCall方法,用于獲取指定通用組件的Caller通信接口。如下示例通過(guò)this.context獲取Ability實(shí)例的context屬性,使用startAbilityByCall拉起Callee被調(diào)用端并獲取Caller通信接口,注冊(cè)Caller的onRelease監(jiān)聽(tīng)。應(yīng)用開(kāi)發(fā)者根據(jù)實(shí)際需要做相應(yīng)處理。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-604114.html

// 注冊(cè)caller的release監(jiān)聽(tīng)
private regOnRelease(caller) {
    try {
        caller.on("release", (msg) => {
            console.info(`caller onRelease is called ${msg}`);
        })
        console.info('caller register OnRelease succeed');
    } catch (error) {
        console.info(`caller register OnRelease failed with ${error}`);
    }
}

async onButtonGetCaller() {
    try {
        this.caller = await context.startAbilityByCall({
            bundleName: 'com.samples.CallApplication',
            abilityName: 'CalleeAbility'
        })
        if (this.caller === undefined) {
            console.info('get caller failed')
            return
        }
        console.info('get caller success')
        this.regOnRelease(this.caller)
    } catch (error) {
        console.info(`get caller failed with ${error}`)
    }
}

到了這里,關(guān)于HarmonyOS/OpenHarmony應(yīng)用開(kāi)發(fā)-Stage模型UIAbility組件使用(六)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • HarmonyOS/OpenHarmony(Stage模型)應(yīng)用開(kāi)發(fā)單一手勢(shì)(三)

    HarmonyOS/OpenHarmony(Stage模型)應(yīng)用開(kāi)發(fā)單一手勢(shì)(三)

    RotationGesture (value?:{ fingers ? :number ; angle ? :number }) 旋轉(zhuǎn)手勢(shì)用于觸發(fā)旋轉(zhuǎn)手勢(shì)事件,觸發(fā)旋轉(zhuǎn)手勢(shì)的最少手指數(shù)量為2指,最大為5指,最小改變度數(shù)為1度,擁有兩個(gè)可選參數(shù): fingers:非必選參數(shù),用于聲明觸發(fā)旋轉(zhuǎn)手勢(shì)所需要的最少手指數(shù)量,最小值為2,最大值為5,默認(rèn)值

    2024年02月09日
    瀏覽(24)
  • HarmonyOS/OpenHarmony應(yīng)用開(kāi)發(fā)-Stage模型ArkTS語(yǔ)言FormExtensionAbility

    FormExtensionAbility模塊提供了卡片擴(kuò)展相關(guān)接口。 說(shuō)明 : 模塊首批接口從API version 9 開(kāi)始支持。模塊接口僅可在Stage模型下使用。 導(dǎo)入模塊 : import FormExtensionAbility from \\\'@ohos.app.form.FormExtensionAbility\\\'; 屬性: 名稱 類型 可讀 可寫(xiě) 說(shuō)明 context FormExtensionContext 是 否 FormExtensionAbility的上下

    2024年02月01日
    瀏覽(25)
  • HarmonyOS/OpenHarmony(Stage模型)卡片開(kāi)發(fā)應(yīng)用上下文Context使用場(chǎng)景二

    3.創(chuàng)建其他應(yīng)用或其他Module的Context 基類Context提供創(chuàng)建其他應(yīng)用或其他Module的Context的方法為createModuleContext(moduleName:string),創(chuàng)建其他應(yīng)用或者其他Module的Context,從而通過(guò)該Context獲取相應(yīng)的資源信息(例如獲取其他Module的獲取應(yīng)用開(kāi)發(fā)路徑信息)。 調(diào)用createModuleContext(moduleNa

    2024年02月11日
    瀏覽(23)
  • HarmonyOS/OpenHarmony(Stage模型)卡片開(kāi)發(fā)應(yīng)用上下文Context使用場(chǎng)景一

    HarmonyOS/OpenHarmony(Stage模型)卡片開(kāi)發(fā)應(yīng)用上下文Context使用場(chǎng)景一

    1.獲取應(yīng)用文件路徑 基類Context提供了獲取應(yīng)用文件路徑的能力,ApplicationContext、AbilityStageContext、UIAbilityContext和ExtensionContext均繼承該能力。應(yīng)用文件路徑屬于應(yīng)用沙箱路徑。上述各類Context獲取的應(yīng)用文件路徑有所不同。 通過(guò)ApplicationContext獲取應(yīng)用級(jí)別的應(yīng)用文件路徑,此路

    2024年02月11日
    瀏覽(28)
  • 鴻蒙(HarmonyOS)應(yīng)用開(kāi)發(fā)——應(yīng)用程序入口UIAbility(題目答案)

    1.一個(gè)應(yīng)用只能有一個(gè)UIAbility。 錯(cuò)誤(False) 解析:可以有多個(gè),也可以有一個(gè) 2.創(chuàng)建的Empty Ability模板工程,初始會(huì)生成一個(gè)UIAbility文件。 正確(True) 3.每調(diào)用一次router.pushUrl()方法,頁(yè)面路由棧數(shù)量均會(huì)加1。 錯(cuò)誤(False) 解析: pushUrl()有兩種模式,一種單實(shí)例模式,一種是多實(shí)例

    2024年02月04日
    瀏覽(29)
  • HarmonyOS 應(yīng)用開(kāi)發(fā)之UIAbility組件間交互(設(shè)備內(nèi))

    HarmonyOS 應(yīng)用開(kāi)發(fā)之UIAbility組件間交互(設(shè)備內(nèi))

    UIAbility是系統(tǒng)調(diào)度的最小單元。在設(shè)備內(nèi)的功能模塊之間跳轉(zhuǎn)時(shí),會(huì)涉及到啟動(dòng)特定的UIAbility,該UIAbility可以是應(yīng)用內(nèi)的其他UIAbility,也可以是其他應(yīng)用的UIAbility(例如啟動(dòng)三方支付UIAbility)。 本文將從如下場(chǎng)景分別介紹設(shè)備內(nèi)UIAbility間的交互方式。對(duì)于跨設(shè)備的應(yīng)用組件交

    2024年04月12日
    瀏覽(18)
  • HarmonyOS/OpenHarmony(Stage模型)卡片開(kāi)發(fā)AbilityStage組件容器

    AbilityStage是一個(gè)Module級(jí)別的組件容器,應(yīng)用的HAP在首次加載時(shí)會(huì)創(chuàng)建一個(gè)AbilityStage實(shí)例,可以對(duì)該Module進(jìn)行初始化等操作。 AbilityStage與Module一一對(duì)應(yīng),即一個(gè)Module擁有一個(gè)AbilityStage。 DevEco Studio默認(rèn)工程中未自動(dòng)生成AbilityStage,如需要使用AbilityStage的能力,可以手動(dòng)新建一個(gè)

    2024年02月11日
    瀏覽(22)
  • HarmonyOS Stage模型 UIAbility生命周期狀態(tài)

    HarmonyOS Stage模型 UIAbility生命周期狀態(tài)

    UIAbility的生命周期包括Create、Foreground、Background、Destroy四個(gè)狀態(tài) Create 狀態(tài),在UIAbility實(shí)例 創(chuàng)建 時(shí)觸發(fā),對(duì)應(yīng)onCreate回調(diào)??梢栽趏nCreate回調(diào)中進(jìn)行相關(guān)初始化操作 Foreground 狀態(tài),在UIAbility 切換至前臺(tái) 時(shí)觸發(fā)。對(duì)應(yīng)onForeground回調(diào),在UIAbility的UI頁(yè)面可見(jiàn)之前,即UIAbility切換至

    2024年01月16日
    瀏覽(59)
  • HarmonyOS應(yīng)用開(kāi)發(fā)學(xué)習(xí)筆記 UIAbility組件與UI的數(shù)據(jù)同步 EventHub、globalThis

    HarmonyOS應(yīng)用開(kāi)發(fā)學(xué)習(xí)筆記 UIAbility組件與UI的數(shù)據(jù)同步 EventHub、globalThis

    1、 HarmoryOS Ability頁(yè)面的生命周期 2、 @Component自定義組件 3、HarmonyOS 應(yīng)用開(kāi)發(fā)學(xué)習(xí)筆記 ets組件生命周期 4、HarmonyOS 應(yīng)用開(kāi)發(fā)學(xué)習(xí)筆記 ets組件樣式定義 @Styles裝飾器:定義組件重用樣式 @Extend裝飾器:定義擴(kuò)展組件樣式 5、HarmonyOS 應(yīng)用開(kāi)發(fā)學(xué)習(xí)筆記 state狀態(tài)管理概述 6、HarmonyO

    2024年02月03日
    瀏覽(31)
  • 《HarmonyOS開(kāi)發(fā) – OpenHarmony開(kāi)發(fā)筆記(基于小型系統(tǒng))》第4章 OpenHarmony應(yīng)用開(kāi)發(fā)實(shí)例

    《HarmonyOS開(kāi)發(fā) – OpenHarmony開(kāi)發(fā)筆記(基于小型系統(tǒng))》第4章 OpenHarmony應(yīng)用開(kāi)發(fā)實(shí)例

    開(kāi)發(fā)環(huán)境 : 開(kāi)發(fā)系統(tǒng):Ubuntu 20.04 開(kāi)發(fā)板:Pegasus物聯(lián)網(wǎng)開(kāi)發(fā)板 MCU:Hi3861 OpenHarmony版本:3.0.1-LTS 1.新建工程及源碼 新建目錄 在applications/sample/myapp中新建src目錄以及myapp.c文件,代碼如下所示。 新建編譯組織文件 新建applications/sample/myapp/BUILD.gn文件,內(nèi)容如下所示: static_libr

    2024年02月09日
    瀏覽(36)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包