<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天內不再提示

HarmonyOS應用程序Ability的作用

鴻蒙系統HarmonyOS ? 來源:鴻蒙社區 ? 作者:云昌白曉明 ? 2021-03-17 15:46 ? 次閱讀

什么是Ability

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

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

HarmonyOS分布式系統所要實現的不僅僅是單一的能力,它所要達到的效果是能力可以單獨存在,可以互相關聯,可以彼此調用互相遷移。比如可以將手機端播放的視頻遷移到智慧屏,通過大屏來觀看視頻,同時也可以將視頻音效分離到外設音響;通過設備A獲取設備B的數據;多設備終端數據同步等。

在HarmonyOS分布式系統中,一切皆能力,能力無大小。在HarmonyOS應用程序中,一個頁面即一種能力,如登錄頁面,即具有登錄功能的能力;一個服務即一種能力,如后臺播放音樂的能力;一個數據操作即一種能力,如獲取數據庫數據等。同時能力之間也可以互相調用,通過頁面能力來管理后臺音效播放與暫停。

面向對象編程中一切皆對象,在HarmonyOS中一切皆能力。

Ability分類

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

FA支持Page Ability

FA代表有UI界面的能力,被設計用于與用戶交互。直白點就是給用戶提供可操作的頁面,官方根據不同的業務類型提供了不同種類的模板,比如關于頁面、列表頁面、個人中心頁面等,可以根據不同的使用場景來選擇不同的模板,也可以在當前模板的基礎上進行修改以達到功能的快速實現。同時也可以調用PA支持的能力,來實現復雜的業務邏輯,比如在新聞內容頁面通過Service Ability實現后臺自動播放音樂。

PA支持Service Ability 和Data Ability

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

Ability生命周期

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

INITIAL: 初始狀態。將即將啟動的能力加載到內存中,但不運行。

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

ACTIVE:激活狀態。當前置于前臺頁面完整呈現,可交互狀態。

BACKGROUND: 不可見狀態。也稱置于后臺,比如A頁面跳轉到B頁面,則B頁面呈現,A頁面隱藏。這種狀態的頁面在內存不足情況下會被銷毀。

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

注(翻譯錯誤):圖中由于內存不足或用戶跳轉到該能力之后能力被系統銷毀改為系統內存不足等原因導致終止能力,用戶重新導航到該能力。

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

@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();

}

這里我們專門寫一個頁面間跳轉來觀察能力的生命周期,使用HiLog日志的形式來查看。運行應用程序并點擊跳轉,然后再返回,日志控制臺輸出如下所示。

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()方法...

從日志我們觀察到先啟動MainAbility,當跳轉到HomeAbility時,HomeAbility被激活,而MainAbility進入不可見(也就是后臺),當點擊返回按鈕后,MainAbility回到前臺并激活,而HomeAbility將不可見并銷毀。

Ability之間跳轉

Ability之間的跳轉是以意圖(Intent)為載體來承載需要對象之間傳遞的信息。通過封裝意圖相關的參數(Parameters)和操作(Operation),可以啟動或跳轉到另一個能力。

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

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

    關注

    2

    文章

    350

    瀏覽量

    19570
  • HarmonyOS
    +關注

    關注

    79

    文章

    1911

    瀏覽量

    29382
收藏 人收藏

    評論

    相關推薦

    HarmonyOS應用開發-Ability

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

    HarmonyOS】應用開發3-HarmonyOS應用程序框架揭秘

    的全場景世界,不愧是HarmonyOS!小編為大家截取了部分HarmonyOS應用開發- HarmonyOS程序應用框架揭秘的資料,先來一見為快吧!看到這里你是否還意猶未盡呢!更多干貨
    發表于 10-27 09:44

    應用程序開發

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

    HarmonyOS學習之二:鴻蒙HarmonyOS系統架構

    層為HarmonyOS應用程序提供了Java/C/C++/JS等多語言的用戶程序框架和Ability框架,以及各種軟硬件服務對外開放的多語言框架API;同時為采用
    發表于 11-25 14:46

    HarmonyOS學習之二:鴻蒙HarmonyOS系統架構

    和驅動開發、管理框架。二、系統服務層:系統服務層是HarmonyOS的核心能力集合,通過框架層對應用程序提供服務。該層包含以下幾個部分:系統基本能力子系統集:為分布式應用在HarmonyOS多設備上的運行
    發表于 11-25 22:20

    圖解鴻蒙Page Ability的LaunchType

    Ability??傊?,擁有singleton模式的Page Ability將永遠使用唯一的實例;這里涉及到一個棧的概念,這是HarmonyOS管理Page Ability的模式。
    發表于 12-24 09:09

    華為鴻蒙系統教程,HarmonyOS視頻教程 專題教程來啦!一起來學習吧!

    ,是應用所具備能力的抽象,也是應用程序的重要組成部分。一個應用可以具備多種能力,也就是說可以包含多個Ability;HamonyOS支持應用以Ability為單位進行部署,Ability
    發表于 01-25 14:26

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

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

    使用FeatureAbility模塊啟動其他Ability

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

    HarmonyOS原子化服務終端流量入口及接入方式匯總

    終端呈現形式流量入口接入方式手機卡片智慧搜索HarmonyOS AbilityCard AbilityContent Ability智慧服務HarmonyOS AbilityCard
    發表于 10-10 10:56

    HarmonyOS應用相關術語

    便捷服務的用戶應用程序形態。原子化服務基于HarmonyOS API開發,支持運行在1+8+N設備上,供用戶在合適的場景、合適的設備上便捷使用。ArkUI方舟開發框架,是為HarmonyOS平臺開發極簡
    發表于 01-06 14:55

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

    Ability模塊提供對Ability生命周期、上下文環境等調用管理的能力,包括Ability創建、銷毀、轉儲客戶端信息等。說明 :模塊首批接口從API version 9 開始支持。模塊接口僅可
    發表于 03-09 15:11

    HarmonyOS鴻蒙系統的入門學習課件免費下載

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

    基于HarmonyOS Player類實現的應用程序——Codelab技術

    的編寫,再到編譯構建、部署和運行全過程。 您將構建一個基于HarmonyOS?Player類實現的應用程序,該應用程序功能為播放本地視頻資源或從Internet獲得的視頻資源。效果圖如下: 您將會學到什么 ●?如何使用Playe
    的頭像 發表于 03-17 15:59 ?1738次閱讀

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

    HarmonyOS應用開發模型 HarmonyOS的用戶應用程序包APP由一個或多個Hap包組成。每個Hap可以包含一個或多個Ability。Ab
    的頭像 發表于 07-13 09:24 ?1921次閱讀
    亚洲欧美日韩精品久久_久久精品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>