<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

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

3天內不再提示

鴻蒙開發接口Ability框架:【@ohos.application.Ability (Ability)】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-30 17:42 ? 次閱讀

Ability

Ability模塊提供對Ability生命周期、上下文環境等調用管理的能力,包括Ability創建、銷毀、轉儲客戶端信息等。

該模塊提供以下Ability相關的常用功能:

  • [Caller]:通用組件Caller通信客戶端調用接口, 用來向通用組件服務端發送約定數據。
  • [Callee]:通用組件服務端注冊和解除客戶端caller通知送信的callback接口。

說明:

本模塊首批接口從API version 9 開始支持。后續版本的新增接口,采用上角標單獨標記接口的起始版本。
本模塊接口僅可在Stage模型下使用。

導入模塊

import Ability from '@ohos.application.Ability';

鴻蒙開發指導文檔:[qr23.cn/FBD4cY]

屬性

系統能力 :以下各項對應的系統能力均為SystemCapability.Ability.AbilityRuntime.AbilityCore

名稱參數類型可讀可寫說明
context[AbilityContext]上下文。
launchWant[Want]Ability啟動時的參數。
lastRequestWant[Want]Ability最后請求時的參數。
callee[Callee]調用Stub(樁)服務對象。

Ability.onCreate

onCreate(want: Want, param: AbilityConstant.LaunchParam): void;

Ability創建時回調,執行初始化業務邏輯操作。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

參數:

參數名類型必填說明
want[Want]當前Ability的Want類型信息,包括ability名稱、bundle名稱等。
paramAbilityConstant.LaunchParam創建 ability、上次異常退出的原因信息。

示例:

class myAbility extends Ability {
    onCreate(want, param) {
        console.log('onCreate, want:' + want.abilityName);
    }
}

Ability.onWindowStageCreate

onWindowStageCreate(windowStage: window.WindowStage): void

當WindowStage創建后調用。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

參數:

參數名類型必填說明
windowStagewindow.WindowStageWindowStage相關信息。

示例:

class myAbility extends Ability {
    onWindowStageCreate(windowStage) {
        console.log('onWindowStageCreate');
    }
}

Ability.onWindowStageDestroy

onWindowStageDestroy(): void

當WindowStage銷毀后調用。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

示例:

class myAbility extends Ability {
    onWindowStageDestroy() {
        console.log('onWindowStageDestroy');
    }
}

Ability.onWindowStageRestore

onWindowStageRestore(windowStage: window.WindowStage): void

當遷移多實例ability時,恢復WindowStage后調用。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

參數:

參數名類型必填說明
windowStagewindow.WindowStageWindowStage相關信息。

示例:

class myAbility extends Ability {
    onWindowStageRestore(windowStage) {
        console.log('onWindowStageRestore');
    }
}

Ability.onDestroy

onDestroy(): void;

Ability生命周期回調,在銷毀時回調,執行資源清理等操作。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

示例:

class myAbility extends Ability {
    onDestroy() {
        console.log('onDestroy');
    }
}

Ability.onForeground

onForeground(): void;

Ability生命周期回調,當應用從后臺轉到前臺時觸發。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

示例:

class myAbility extends Ability {
    onForeground() {
        console.log('onForeground');
    }
}

Ability.onBackground

onBackground(): void;

Ability生命周期回調,當應用從前臺轉到后臺時觸發。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

示例:

class myAbility extends Ability {
    onBackground() {
        console.log('onBackground');
    }
}

Ability.onContinue

onContinue(wantParam : {[key: string]: any}): AbilityConstant.OnContinueResult;

當ability遷移準備遷移時觸發,保存數據。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

參數:

參數名類型必填說明
wantParam{[key: string]: any}want相關參數。

返回值:

類型說明
AbilityConstant.OnContinueResult繼續的結果。

示例:

import AbilityConstant from "@ohos.application.AbilityConstant"
class myAbility extends Ability {
    onContinue(wantParams) {
        console.log('onContinue');
        wantParams["myData"] = "my1234567";
        return AbilityConstant.OnContinueResult.AGREE;
    }
}

Ability.onNewWant

onNewWant(want: Want): void;

當ability的啟動模式設置為單例時回調會被調用。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

參數:

參數名類型必填說明
want[Want]Want類型參數,如ability名稱,包名等。

示例:

class myAbility extends Ability {
    onNewWant(want) {
        console.log('onNewWant, want:' + want.abilityName);
    }
}

Ability.onConfigurationUpdated

onConfigurationUpdated(config: Configuration): void;

當系統配置更新時調用。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

參數:

參數名類型必填說明
config[Configuration]表示需要更新的配置信息。

示例:

class myAbility extends Ability {
    onConfigurationUpdated(config) {
        console.log('onConfigurationUpdated, config:' + JSON.stringify(config));
    }
}

Ability.dump

dump(params: Array): Array;

轉儲客戶端信息時調用。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

參數:

參數名類型必填說明
paramsArray表示命令形式的參數。

示例:

class myAbility extends Ability {
    dump(params) {
        console.log('dump, params:' + JSON.stringify(params));
        return ["params"]
    }
}

Caller

通用組件Caller通信客戶端調用接口, 用來向通用組件服務端發送約定數據。

Caller.call

call(method: string, data: rpc.Sequenceable): Promise;

向通用組件服務端發送約定序列化數據。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

參數:

參數名類型必填說明
methodstring約定的服務端注冊事件字符串。
datarpc.Sequenceable開發者實現的Sequenceable可序列化數據。

返回值:

類型說明
PromisePromise形式返回應答。

示例:

import Ability from '@ohos.application.Ability';
class MyMessageAble{ // 自定義的Sequenceable數據結構
    name:""
    str:""
    num: 1
    constructor(name, str) {
      this.name = name;
      this.str = str;
    }
    marshalling(messageParcel) {
        messageParcel.writeInt(this.num);
        messageParcel.writeString(this.str);
        console.log('MyMessageAble marshalling num[' + this.num + '] str[' + this.str + ']');
        return true;
    }
    unmarshalling(messageParcel) {
        this.num = messageParcel.readInt();
        this.str = messageParcel.readString();
        console.log('MyMessageAble unmarshalling num[' + this.num + '] str[' + this.str + ']');
        return true;
    }
};
var method = 'call_Function'; // 約定的通知消息字符串
var caller;
export default class MainAbility extends Ability {
    onWindowStageCreate(windowStage) {
      this.context.startAbilityByCall({
          bundleName: "com.example.myservice",
          abilityName: "MainAbility",
          deviceId: ""
      }).then((obj) = > {
          caller = obj;
          let msg = new MyMessageAble(1, "world"); // 參考Sequenceable數據定義
          caller.call(method, msg)
              .then(() = > {
                  console.log('Caller call() called');
              }).catch((e) = > {
              console.log('Caller call() catch error ' + e);
          });
          console.log('Caller GetCaller Get ' + caller);
      }).catch((e) = > {
          console.log('Caller GetCaller error ' + e);
      });
    }
    
}

Caller.callWithResult

callWithResult(method: string, data: rpc.Sequenceable): Promise;

向通用組件服務端發送約定序列化數據, 并將服務端返回的約定序列化數據帶回。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

參數:

參數名類型必填說明
methodstring約定的服務端注冊事件字符串。
datarpc.Sequenceable由開發者實現的Sequenceable可序列化數據。

返回值:

類型說明
PromisePromise形式返回通用組件服務端應答數據。

示例:

import Ability from '@ohos.application.Ability';
class MyMessageAble{
    name:""
    str:""
    num: 1
    constructor(name, str) {
      this.name = name;
      this.str = str;
    }
    marshalling(messageParcel) {
        messageParcel.writeInt(this.num);
        messageParcel.writeString(this.str);
        console.log('MyMessageAble marshalling num[' + this.num + '] str[' + this.str + ']');
        return true;
    }
    unmarshalling(messageParcel) {
        this.num = messageParcel.readInt();
        this.str = messageParcel.readString();
        console.log('MyMessageAble unmarshalling num[' + this.num + '] str[' + this.str + ']');
        return true;
    }
};
var method = 'call_Function';
var caller;
export default class MainAbility extends Ability {
    onWindowStageCreate(windowStage) {
      this.context.startAbilityByCall({
          bundleName: "com.example.myservice",
          abilityName: "MainAbility",
          deviceId: ""
      }).then((obj) = > {
          caller = obj;
          let msg = new MyMessageAble(1, "world");
          caller.callWithResult(method, msg)
              .then((data) = > {
                  console.log('Caller callWithResult() called');
                  let retmsg = new MyMessageAble(0, "");
                  data.readSequenceable(retmsg);
              }).catch((e) = > {
              console.log('Caller callWithResult() catch error ' + e);
          });
          console.log('Caller GetCaller Get ' + caller);
      }).catch((e) = > {
          console.log('Caller GetCaller error ' + e);
      });
    }
}

Caller.release

release(): void;

主動釋放通用組件服務端的通信接口。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

示例:

import Ability from '@ohos.application.Ability';
var caller;
export default class MainAbility extends Ability {
    onWindowStageCreate(windowStage) {
      this.context.startAbilityByCall({
          bundleName: "com.example.myservice",
          abilityName: "MainAbility",
          deviceId: ""
      }).then((obj) = > {
          caller = obj;
          try {
              caller.release();
          } catch (e) {
              console.log('Caller Release error ' + e);
          }
          console.log('Caller GetCaller Get ' + caller);
      }).catch((e) = > {
          console.log('Caller GetCaller error ' + e);
      });
    }
}

Caller.onRelease

onRelease(callback: OnReleaseCallBack): void;

注冊通用組件服務端Stub(樁)斷開監聽通知。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

參數:

參數名類型必填說明
callbackOnReleaseCallBack返回onRelease回調結果。

示例:

import Ability from '@ohos.application.Ability';
var caller;
export default class MainAbility extends Ability {
    onWindowStageCreate(windowStage) {
      this.context.startAbilityByCall({
          bundleName: "com.example.myservice",
          abilityName: "MainAbility",
          deviceId: ""
      }).then((obj) = > {
          caller = obj;
          try {
              caller.onRelease((str) = > {
                  console.log(' Caller OnRelease CallBack is called ' + str);
              });
          } catch (e) {
              console.log('Caller Release error ' + e);
          }
          console.log('Caller GetCaller Get ' + caller);
      }).catch((e) = > {
          console.log('Caller GetCaller error ' + e);
      });
    }
}

Callee

通用組件服務端注冊和解除客戶端caller通知送信的callback接口。

Callee.on

on(method: string, callback: CaleeCallBack): void;

通用組件服務端注冊消息通知callback。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

參數:

參數名類型必填說明
methodstring與客戶端約定的通知消息字符串。
callbackCaleeCallBack一個rpc.MessageParcel類型入參的js通知同步回調函數, 回調函數至少要返回一個空的rpc.Sequenceable數據對象, 其他視為函數執行錯誤。

示例:

import Ability from '@ohos.application.Ability';
class MyMessageAble{
    name:""
    str:""
    num: 1
    constructor(name, str) {
      this.name = name;
      this.str = str;
    }
    marshalling(messageParcel) {
        messageParcel.writeInt(this.num);
        messageParcel.writeString(this.str);
        console.log('MyMessageAble marshalling num[' + this.num + '] str[' + this.str + ']');
        return true;
    }
    unmarshalling(messageParcel) {
        this.num = messageParcel.readInt();
        this.str = messageParcel.readString();
        console.log('MyMessageAble unmarshalling num[' + this.num + '] str[' + this.str + ']');
        return true;
    }
};
var method = 'call_Function';
function funcCallBack(pdata) {
    console.log('Callee funcCallBack is called ' + pdata);
    let msg = new MyMessageAble(0, "");
    pdata.readSequenceable(msg);
    return new MyMessageAble(10, "Callee test");
}
export default class MainAbility extends Ability {
    onCreate(want, launchParam) {
        console.log('Callee onCreate is called');
        this.callee.on(method, funcCallBack);
    }
}

Callee.off

off(method: string): void;

解除通用組件服務端注冊消息通知callback。

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

參數:

參數名類型必填說明
methodstring已注冊的通知事件字符串。

示例:

import Ability from '@ohos.application.Ability';
var method = 'call_Function';
export default class MainAbility extends Ability {
    onCreate(want, launchParam) {
        console.log('Callee onCreate is called');
        this.callee.off(method);
    }
}

OnReleaseCallBack

(msg: string): void;

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

名稱參數類型可讀可寫說明
(msg: string)function調用者注冊的偵聽器函數接口的原型。

搜狗高速瀏覽器截圖20240326151450.png

CaleeCallBack

(indata: rpc.MessageParcel): rpc.Sequenceable;

系統能力 :SystemCapability.Ability.AbilityRuntime.AbilityCore

名稱參數類型可讀可寫說明
(indata: rpc.MessageParcel)rpc.Sequenceable被調用方注冊的消息偵聽器函數接口的原型。

審核編輯 黃宇

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

    關注

    33

    文章

    7653

    瀏覽量

    148551
  • 框架
    +關注

    關注

    0

    文章

    301

    瀏覽量

    17049
  • 鴻蒙
    +關注

    關注

    55

    文章

    1650

    瀏覽量

    42124
收藏 人收藏

    評論

    相關推薦

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

    ); hilog.info(ENTRY_ABILITY_DOMAIN, TAG, \'%{public}s\', \'Ability onBackground\'); } } 本文內容是鴻蒙
    發表于 01-08 15:34

    鴻蒙應用模型開發-更新SDK后報錯解決

    變更,可以嘗試替換為新的模塊名(常用接口如下): 原有接口接口 @ohos.application.Ability @ohos.app.abil
    發表于 02-18 17:17

    HarmonyOS應用開發-Ability

    可以分為FA(Feature Ability)和PA(Particle Ability)兩種類型,每種類型為開發者提供了不同的模板,以便實現不同的業務功能。FA支持Page Ability
    發表于 09-24 15:39

    跟阿斌一起學鴻蒙(2): Ability vs App?

    在進一步實踐之前,需要先弄明白一個概念:Ability。不知道你有沒有注意到,使用鴻蒙開發工具DevEco Studio創建項目時,我們選擇創建的是一個個Ability。這是為什么呢?
    發表于 11-30 20:56

    跟阿斌一起學鴻蒙(2): Ability vs App?

    在進一步實踐之前,需要先弄明白一個概念:Ability。不知道你有沒有注意到,使用鴻蒙開發工具DevEco Studio創建項目時,我們選擇創建的是一個個Ability。這是為什么呢?
    發表于 12-02 16:55

    圖解鴻蒙Feature Ability和AbilitySlice的關系

    當我們在DevEco Studio中創建一個鴻蒙項目時,如果選擇的設備是手機,并且選擇的模板是Empty Feature Ability(Java),如下圖所示,那么自動生成的Hello World
    發表于 12-21 15:03

    圖解鴻蒙Page Ability的LaunchType

    com.unitymarvel.demo.ability; import com.unitymarvel.demo.ResourceTable;import ohos.aafwk.ability.Ability;import
    發表于 12-24 09:09

    HarmonyOS應用開發-Page Ability啟動Service Ability

    Page Ablity響應交互,從而調用Service Ability鴻蒙開發中最常用的交互方式,在Page Ablity使用startAbility(intent)啟動Service
    發表于 11-03 10:32

    OpenHarmony開發Ability架構

    FA模型綜述整體架構OpenHarmony用戶程序的開發本質上就是開發Ability。OpenHarmony系統是通過對Ability調度,結合系統提供的一致性調度契約對
    發表于 05-12 15:12

    使用FeatureAbility模塊啟動其他Ability

    直接操作,可以和FA配合使用。在JS/eTS語言中,Ability框架又被分為FA模型和Stage模型(該模型目前僅支持OpenHarmony API9)。在DevEco Studio 3.0
    發表于 09-02 15:04

    #DAYU200#Ability入門

    ;而PA無UI界面,提供后臺運行任務的能力以及統一的數據訪問抽象?;贔A/PA開發的應用,能夠實現特定的業務功能,支持跨設備調度與分發,為用戶提供一致、高效的應用體驗。目前Ability框架模型具有
    發表于 09-28 15:03

    HarmonyOS/OpenHarmony應用開發-stage使用顯示Want啟動Ability

    context from '@ohos.application.context';@Entry@Componentstruct Index {@State message: string
    發表于 02-07 10:22

    HarmonyOS/OpenHarmony應用開發-ArkTS的Ability基類

    在Stage模型下使用。導入模塊:import Ability from '@ohos.app.ability.Ability';接口說明:Ability
    發表于 03-09 15:11

    HarmonyOS/OpenHarmony應用開發-Stage模型ArkTS語言Ability基類

    在Stage模型下使用。導入模塊 :import Ability from \'@ohos.app.ability.Ability\';接口
    發表于 04-12 16:14

    一文解析鴻蒙Page Ability的LaunchType

    如果Page Ability1的launchType屬性值是singleton,那么不管顯示多少次Page Ability1,在棧中永遠只有1個Page Ability1實例。
    的頭像 發表于 04-16 14:07 ?1422次閱讀
    一文解析<b class='flag-5'>鴻蒙</b>Page <b class='flag-5'>Ability</b>的LaunchType
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>