RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HarmonyOS應(yīng)用程序Ability的作用

鴻蒙系統(tǒng)HarmonyOS ? 來源:鴻蒙社區(qū) ? 作者:云昌白曉明 ? 2021-03-17 15:46 ? 次閱讀

什么是Ability

Ability意為能力,是HarmonyOS應(yīng)用程序提供的抽象功能。在Android應(yīng)用程序中,Activity是整個(gè)應(yīng)用程序的核心,其意為活動(dòng)。無論是活動(dòng)還是能力都是一種表述形式,雖然直譯后理解起來比較抽象,但如果我們把它們理解為功能,這樣就比較方便了。

就目前單一設(shè)備而言,我們可以使用手機(jī)打電話,發(fā)短信,玩游戲等,這些就是手機(jī)具有能力。在生活中,能力的體現(xiàn)無處不在,比如電飯煲具有蒸煮煲湯的能力;電視具有播放視頻的能力;音響具有外放音樂的能力。

HarmonyOS分布式系統(tǒng)所要實(shí)現(xiàn)的不僅僅是單一的能力,它所要達(dá)到的效果是能力可以單獨(dú)存在,可以互相關(guān)聯(lián),可以彼此調(diào)用互相遷移。比如可以將手機(jī)端播放的視頻遷移到智慧屏,通過大屏來觀看視頻,同時(shí)也可以將視頻音效分離到外設(shè)音響;通過設(shè)備A獲取設(shè)備B的數(shù)據(jù);多設(shè)備終端數(shù)據(jù)同步等。

在HarmonyOS分布式系統(tǒng)中,一切皆能力,能力無大小。在HarmonyOS應(yīng)用程序中,一個(gè)頁面即一種能力,如登錄頁面,即具有登錄功能的能力;一個(gè)服務(wù)即一種能力,如后臺(tái)播放音樂的能力;一個(gè)數(shù)據(jù)操作即一種能力,如獲取數(shù)據(jù)庫數(shù)據(jù)等。同時(shí)能力之間也可以互相調(diào)用,通過頁面能力來管理后臺(tái)音效播放與暫停。

面向?qū)ο?a target="_blank">編程中一切皆對(duì)象,在HarmonyOS中一切皆能力。

Ability分類

一個(gè)HarmonyOS應(yīng)用程序可以包含一個(gè)或多個(gè)能力。HarmonyOS應(yīng)用程序可以以能力為單位進(jìn)行部署。在HarmonyOS應(yīng)用程序中將能力分為FA(Feature Ability,即元程序)和PA(Particle Ability,即元服務(wù))兩種類型,針對(duì)兩種類型提供了不同的模板可以在日常業(yè)務(wù)開發(fā)中直接使用。

FA支持Page Ability

FA代表有UI界面的能力,被設(shè)計(jì)用于與用戶交互。直白點(diǎn)就是給用戶提供可操作的頁面,官方根據(jù)不同的業(yè)務(wù)類型提供了不同種類的模板,比如關(guān)于頁面、列表頁面、個(gè)人中心頁面等,可以根據(jù)不同的使用場(chǎng)景來選擇不同的模板,也可以在當(dāng)前模板的基礎(chǔ)上進(jìn)行修改以達(dá)到功能的快速實(shí)現(xiàn)。同時(shí)也可以調(diào)用PA支持的能力,來實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)邏輯,比如在新聞內(nèi)容頁面通過Service Ability實(shí)現(xiàn)后臺(tái)自動(dòng)播放音樂。

PA支持Service Ability 和Data Ability

PA代表沒有UI界面的能力,用于支持FA。例如提供數(shù)據(jù)訪問能力作為數(shù)據(jù)存儲(chǔ)。Service Ability提供后臺(tái)運(yùn)行任務(wù)的能力;Data Ability提供插入、刪除、更新、查詢及打開文件的能力。

Ability生命周期

能力有四種生命周期狀態(tài):INITIAL(初始態(tài))、INACTIVE(未激活)、ACTIVE(激活)、BACKGROUND(后臺(tái))。

INITIAL: 初始狀態(tài)。將即將啟動(dòng)的能力加載到內(nèi)存中,但不運(yùn)行。

INACTIVE:未激活狀態(tài)。前臺(tái)和后臺(tái)中間的狀態(tài),該狀態(tài)下UI可見,但不可操作。

ACTIVE:激活狀態(tài)。當(dāng)前置于前臺(tái)頁面完整呈現(xiàn),可交互狀態(tài)。

BACKGROUND: 不可見狀態(tài)。也稱置于后臺(tái),比如A頁面跳轉(zhuǎn)到B頁面,則B頁面呈現(xiàn),A頁面隱藏。這種狀態(tài)的頁面在內(nèi)存不足情況下會(huì)被銷毀。

整個(gè)完整的生命周期圖如下所示(來自官方):

注(翻譯錯(cuò)誤):圖中由于內(nèi)存不足或用戶跳轉(zhuǎn)到該能力之后能力被系統(tǒng)銷毀改為系統(tǒng)內(nèi)存不足等原因?qū)е陆K止能力,用戶重新導(dǎo)航到該能力。

所有頁面能力都必須從重寫onStart()方法開始,該能力的所有生命周期回調(diào)方法如下:

@Override

publicvoidonStart(Intentintent){

super.onStart(intent);

super.setMainRoute(HomeAbilitySlice.class.getName());

}

@Override

protectedvoidonActive(){

super.onActive();

}

@Override

protectedvoidonInactive(){

super.onInactive();

}

@Override

protectedvoidonBackground(){

super.onBackground();

}

@Override

protectedvoidonForeground(Intentintent){

super.onForeground(intent);

}

@Override

protectedvoidonStop(){

super.onStop();

}

這里我們專門寫一個(gè)頁面間跳轉(zhuǎn)來觀察能力的生命周期,使用HiLog日志的形式來查看。運(yùn)行應(yīng)用程序并點(diǎn)擊跳轉(zhuǎn),然后再返回,日志控制臺(tái)輸出如下所示。

Ability_Lifecycle:MainAbilityonInitialized()方法...

Ability_Lifecycle:MainAbilityonStart()方法...

Ability_Lifecycle:MainAbilityonActive()方法...

Ability_Lifecycle:MainAbilityonInactive()方法...

Ability_Lifecycle:HomeAbilityonInitialized()方法...

Ability_Lifecycle:HomeAbilityonStart()方法...

Ability_Lifecycle:HomeAbilityonActive()方法...

Ability_Lifecycle:MainAbilityonBackground()方法...

Ability_Lifecycle:HomeAbilityonInactive()方法...

Ability_Lifecycle:MainAbilityonForeground()方法...

Ability_Lifecycle:MainAbilityonActive()方法...

Ability_Lifecycle:HomeAbilityonBackground()方法...

Ability_Lifecycle:HomeAbilityonStop()方法...

從日志我們觀察到先啟動(dòng)MainAbility,當(dāng)跳轉(zhuǎn)到HomeAbility時(shí),HomeAbility被激活,而MainAbility進(jìn)入不可見(也就是后臺(tái)),當(dāng)點(diǎn)擊返回按鈕后,MainAbility回到前臺(tái)并激活,而HomeAbility將不可見并銷毀。

Ability之間跳轉(zhuǎn)

Ability之間的跳轉(zhuǎn)是以意圖(Intent)為載體來承載需要對(duì)象之間傳遞的信息。通過封裝意圖相關(guān)的參數(shù)(Parameters)和操作(Operation),可以啟動(dòng)或跳轉(zhuǎn)到另一個(gè)能力。

Buttonbutton=(Button)findComponentById(ResourceTable.Id_btn);

button.setClickedListener(l->{

Operationoperation=newIntent.OperationBuilder()

.withDeviceId("")

.withBundleName("com.itming.walking.photokit")

.withAbilityName("com.itming.walking.photokit.HomeAbility")

.build();

intent.setOperation(operation);

startAbility(intent);

});

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 智慧屏
    +關(guān)注

    關(guān)注

    2

    文章

    356

    瀏覽量

    19682
  • HarmonyOS
    +關(guān)注

    關(guān)注

    79

    文章

    1973

    瀏覽量

    30142
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙開發(fā)接口Ability框架:【 (Context模塊)】

    Context模塊提供了ability或application的上下文的能力,包括允許訪問特定于應(yīng)用程序的資源、請(qǐng)求和驗(yàn)證權(quán)限等。
    的頭像 發(fā)表于 05-13 16:04 ?711次閱讀
    鴻蒙開發(fā)接口<b class='flag-5'>Ability</b>框架:【 (Context模塊)】

    HarmonyOS NEXT Developer Beta1最新術(shù)語表

    服務(wù) 原名原子化服務(wù),是HarmonyOS提供的一種面向未來的服務(wù)提供方式,是有獨(dú)立入口的(用戶可通過點(diǎn)擊服務(wù)卡片打開元服務(wù))、免安裝的(無需顯式安裝,由系統(tǒng)程序框架后臺(tái)安裝后即可使用)用戶應(yīng)用程序形態(tài)
    發(fā)表于 06-27 16:16

    HarmonyOS應(yīng)用開發(fā)-Ability

    Ability是應(yīng)用所具備能力的抽象,也是應(yīng)用程序的重要組成部分。一個(gè)應(yīng)用可以具備多種能力(即可以包含多個(gè)Ability),HarmonyOS支持應(yīng)用以
    發(fā)表于 09-24 15:39

    應(yīng)用程序開發(fā)

    應(yīng)用程序開發(fā)不少開發(fā)者還針對(duì)AI Camera、手表做一些應(yīng)用和前端展示,這里給到的應(yīng)用程序開發(fā)資料可能有所幫助,主要內(nèi)容有:鴻蒙OS應(yīng)用程序開發(fā)HarmonyOS開發(fā)文檔(一)
    發(fā)表于 11-24 11:58

    HarmonyOS學(xué)習(xí)之二:鴻蒙HarmonyOS系統(tǒng)架構(gòu)

    和驅(qū)動(dòng)開發(fā)、管理框架。二、系統(tǒng)服務(wù)層:系統(tǒng)服務(wù)層是HarmonyOS的核心能力集合,通過框架層對(duì)應(yīng)用程序提供服務(wù)。該層包含以下幾個(gè)部分:系統(tǒng)基本能力子系統(tǒng)集:為分布式應(yīng)用在HarmonyOS多設(shè)備上的運(yùn)行
    發(fā)表于 11-25 22:20

    圖解鴻蒙Page Ability的LaunchType

    Ability??傊?,擁有singleton模式的Page Ability將永遠(yuǎn)使用唯一的實(shí)例;這里涉及到一個(gè)棧的概念,這是HarmonyOS管理Page Ability的模式。
    發(fā)表于 12-24 09:09

    HarmonyOS應(yīng)用開發(fā)-Page Ability啟動(dòng)Service Ability

    Page Ablity響應(yīng)交互,從而調(diào)用Service Ability是鴻蒙開發(fā)中最常用的交互方式,在Page Ablity使用startAbility(intent)啟動(dòng)Service
    發(fā)表于 11-03 10:32

    使用FeatureAbility模塊啟動(dòng)其他Ability

    1 前言在HarmonyOS/OpenHarmony應(yīng)用程序中一切皆Ability(能力),即是每個(gè)界面都可以是Ability,每個(gè)功能都可以是Ab
    發(fā)表于 09-02 15:04

    HarmonyOS應(yīng)用相關(guān)術(shù)語

    便捷服務(wù)的用戶應(yīng)用程序形態(tài)。原子化服務(wù)基于HarmonyOS API開發(fā),支持運(yùn)行在1+8+N設(shè)備上,供用戶在合適的場(chǎng)景、合適的設(shè)備上便捷使用。ArkUI方舟開發(fā)框架,是為HarmonyOS平臺(tái)開發(fā)極簡(jiǎn)
    發(fā)表于 01-06 14:55

    HarmonyOS鴻蒙系統(tǒng)的入門學(xué)習(xí)課件免費(fèi)下載

    Ability 是應(yīng)用所具備能力的抽象,也是應(yīng)用程序的重要組成部分。一個(gè)應(yīng)用可以具備多種能力(即可以包含多個(gè) Ability),HarmonyOS 支持應(yīng)用以
    發(fā)表于 10-21 08:00 ?41次下載
    <b class='flag-5'>HarmonyOS</b>鴻蒙系統(tǒng)的入門學(xué)習(xí)課件免費(fèi)下載

    基于HarmonyOS Player類實(shí)現(xiàn)的應(yīng)用程序——Codelab技術(shù)

    的編寫,再到編譯構(gòu)建、部署和運(yùn)行全過程。 您將構(gòu)建一個(gè)基于HarmonyOS?Player類實(shí)現(xiàn)的應(yīng)用程序,該應(yīng)用程序功能為播放本地視頻資源或從Internet獲得的視頻資源。效果圖如下: 您將會(huì)學(xué)到什么 ●?如何使用Playe
    的頭像 發(fā)表于 03-17 15:59 ?1969次閱讀

    HarmonyOS版本下如何基于JS UI框架來開發(fā)?

    HarmonyOS應(yīng)用開發(fā)模型 HarmonyOS的用戶應(yīng)用程序包APP由一個(gè)或多個(gè)Hap包組成。每個(gè)Hap可以包含一個(gè)或多個(gè)AbilityAb
    的頭像 發(fā)表于 07-13 09:24 ?2165次閱讀

    HarmonyOS開發(fā)案例:【Stage模型下Ability的創(chuàng)建和使用】

    基于Stage模型,對(duì)Ability的創(chuàng)建和使用進(jìn)行講解。首先在課程中我們將帶領(lǐng)大家使用DevEco Studio創(chuàng)建一個(gè)Stage模型Ability,并使用UIAbilityContext啟動(dòng)
    的頭像 發(fā)表于 05-08 14:41 ?724次閱讀
    <b class='flag-5'>HarmonyOS</b>開發(fā)案例:【Stage模型下<b class='flag-5'>Ability</b>的創(chuàng)建和使用】

    HarmonyOS開發(fā)案例:【Ability內(nèi)頁面間的跳轉(zhuǎn)】

    基于Stage模型下的Ability開發(fā),實(shí)現(xiàn)Ability內(nèi)頁面間的跳轉(zhuǎn)和數(shù)據(jù)傳遞。
    的頭像 發(fā)表于 05-09 10:39 ?566次閱讀
    <b class='flag-5'>HarmonyOS</b>開發(fā)案例:【<b class='flag-5'>Ability</b>內(nèi)頁面間的跳轉(zhuǎn)】

    鴻蒙應(yīng)用模型:【Ability Kit】簡(jiǎn)介

    Ability Kit(程序框架服務(wù))提供了應(yīng)用程序開發(fā)和運(yùn)行的應(yīng)用模型,是系統(tǒng)為開發(fā)者提供的應(yīng)用程序所需能力的抽象提煉,它提供了應(yīng)用程序
    的頭像 發(fā)表于 05-29 14:41 ?634次閱讀
    鴻蒙應(yīng)用模型:【<b class='flag-5'>Ability</b> Kit】簡(jiǎn)介
    RM新时代网站-首页