什么是Ability
Ability意為能力,是HarmonyOS應(yīng)用程序提供的抽象功能。在Android應(yīng)用程序中,Activity是整個應(yīng)用程序的核心,其意為活動。無論是活動還是能力都是一種表述形式,雖然直譯后理解起來比較抽象,但如果我們把它們理解為功能,這樣就比較方便了。
就目前單一設(shè)備而言,我們可以使用手機打電話,發(fā)短信,玩游戲等,這些就是手機具有能力。在生活中,能力的體現(xiàn)無處不在,比如電飯煲具有蒸煮煲湯的能力;電視具有播放視頻的能力;音響具有外放音樂的能力。
但HarmonyOS分布式系統(tǒng)所要實現(xiàn)的不僅僅是單一的能力,它所要達(dá)到的效果是能力可以單獨存在,可以互相關(guān)聯(lián),可以彼此調(diào)用互相遷移。比如可以將手機端播放的視頻遷移到智慧屏,通過大屏來觀看視頻,同時也可以將視頻音效分離到外設(shè)音響;通過設(shè)備A獲取設(shè)備B的數(shù)據(jù);多設(shè)備終端數(shù)據(jù)同步等。
在HarmonyOS分布式系統(tǒng)中,一切皆能力,能力無大小。在HarmonyOS應(yīng)用程序中,一個頁面即一種能力,如登錄頁面,即具有登錄功能的能力;一個服務(wù)即一種能力,如后臺播放音樂的能力;一個數(shù)據(jù)操作即一種能力,如獲取數(shù)據(jù)庫數(shù)據(jù)等。同時能力之間也可以互相調(diào)用,通過頁面能力來管理后臺音效播放與暫停。
面向?qū)ο?a target="_blank">編程中一切皆對象,在HarmonyOS中一切皆能力。
Ability分類
一個HarmonyOS應(yīng)用程序可以包含一個或多個能力。HarmonyOS應(yīng)用程序可以以能力為單位進行部署。在HarmonyOS應(yīng)用程序中將能力分為FA(Feature Ability,即元程序)和PA(Particle Ability,即元服務(wù))兩種類型,針對兩種類型提供了不同的模板可以在日常業(yè)務(wù)開發(fā)中直接使用。
FA支持Page Ability
FA代表有UI界面的能力,被設(shè)計用于與用戶交互。直白點就是給用戶提供可操作的頁面,官方根據(jù)不同的業(yè)務(wù)類型提供了不同種類的模板,比如關(guān)于頁面、列表頁面、個人中心頁面等,可以根據(jù)不同的使用場景來選擇不同的模板,也可以在當(dāng)前模板的基礎(chǔ)上進行修改以達(dá)到功能的快速實現(xiàn)。同時也可以調(diào)用PA支持的能力,來實現(xiàn)復(fù)雜的業(yè)務(wù)邏輯,比如在新聞內(nèi)容頁面通過Service Ability實現(xiàn)后臺自動播放音樂。
PA支持Service Ability 和Data Ability
PA代表沒有UI界面的能力,用于支持FA。例如提供數(shù)據(jù)訪問能力作為數(shù)據(jù)存儲。Service Ability提供后臺運行任務(wù)的能力;Data Ability提供插入、刪除、更新、查詢及打開文件的能力。
Ability生命周期
能力有四種生命周期狀態(tài):INITIAL(初始態(tài))、INACTIVE(未激活)、ACTIVE(激活)、BACKGROUND(后臺)。
INITIAL: 初始狀態(tài)。將即將啟動的能力加載到內(nèi)存中,但不運行。
INACTIVE:未激活狀態(tài)。前臺和后臺中間的狀態(tài),該狀態(tài)下UI可見,但不可操作。
ACTIVE:激活狀態(tài)。當(dāng)前置于前臺頁面完整呈現(xiàn),可交互狀態(tài)。
BACKGROUND: 不可見狀態(tài)。也稱置于后臺,比如A頁面跳轉(zhuǎn)到B頁面,則B頁面呈現(xiàn),A頁面隱藏。這種狀態(tài)的頁面在內(nèi)存不足情況下會被銷毀。
整個完整的生命周期圖如下所示(來自官方):
注(翻譯錯誤):圖中由于內(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();
}
這里我們專門寫一個頁面間跳轉(zhuǎn)來觀察能力的生命周期,使用HiLog日志的形式來查看。運行應(yīng)用程序并點擊跳轉(zhuǎn),然后再返回,日志控制臺輸出如下所示。
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,當(dāng)跳轉(zhuǎn)到HomeAbility時,HomeAbility被激活,而MainAbility進入不可見(也就是后臺),當(dāng)點擊返回按鈕后,MainAbility回到前臺并激活,而HomeAbility將不可見并銷毀。
Ability之間跳轉(zhuǎn)
Ability之間的跳轉(zhuǎn)是以意圖(Intent)為載體來承載需要對象之間傳遞的信息。通過封裝意圖相關(guān)的參數(shù)(Parameters)和操作(Operation),可以啟動或跳轉(zhuǎn)到另一個能力。
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
-
智慧屏
+關(guān)注
關(guān)注
2文章
360瀏覽量
19930 -
HarmonyOS
+關(guān)注
關(guān)注
79文章
2005瀏覽量
31800
發(fā)布評論請先 登錄
相關(guān)推薦
鴻蒙開發(fā)接口Ability框架:【 (Context模塊)】

HarmonyOS應(yīng)用開發(fā)-Ability
應(yīng)用程序開發(fā)
HarmonyOS學(xué)習(xí)之二:鴻蒙HarmonyOS系統(tǒng)架構(gòu)
HarmonyOS學(xué)習(xí)之二:鴻蒙HarmonyOS系統(tǒng)架構(gòu)
圖解鴻蒙Page Ability的LaunchType
HarmonyOS應(yīng)用開發(fā)-Page Ability啟動Service Ability
使用FeatureAbility模塊啟動其他Ability
HarmonyOS應(yīng)用相關(guān)術(shù)語
HarmonyOS鴻蒙系統(tǒng)的入門學(xué)習(xí)課件免費下載

基于HarmonyOS Player類實現(xiàn)的應(yīng)用程序——Codelab技術(shù)
在HarmonyOS版本下如何基于JS UI框架來開發(fā)?
HarmonyOS開發(fā)案例:【Stage模型下Ability的創(chuàng)建和使用】

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

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

評論