Ability是鴻蒙應用所具備能力的抽象,也是應用程式的重要組成部分。一個應用可以具備多種能力(即可以包含多個Ability),HarmonyOS支援應用以Ability為單位進行部署。Ability可以分為FA(Feature Ability)和PA(Particle Ability)兩種型別,每種型別為開發者提供了不同的模板,以便實現不同的業務功能。
FA支援Page Ability:Page模板是FA唯一支援的模板,用於提供與使用者互動的能力。一個Page例項可以包含一組相關頁面,每個頁面用一個AbilitySlice例項表示。
PA支援Service Ability和Data Ability:Service模板:用於提供後臺執行任務的能力。Data模板:用於對外部提供統一的資料訪問抽象。
大家看到這是不是覺得似曾相識,這個Page Ability不就是Activity,Service Ability不就是Service,Data Ability不就是ContentProvider嗎?至少從目前的描述來看,這個和安卓的那一套即為相似,只不過多了點封裝。那真的是這樣的嗎?
讓我們來一探究竟!!!限於篇幅,我們今天先介紹Page Ability。
【鴻蒙&安卓】
一、概念對比:
【結論】
1、相同的是,首先兩者都是應用的入口,用於提供與使用者互動的能力;2、不同的是,Page Ability只有一個,但可以由多個(最少1個)AbilitySlice組成;而Activity可以是多個共同組成app的,而且可以用Activity巢狀Fragment,甚至是Activity先巢狀Fragment,再巢狀ViewPage或者是Activity先巢狀ViewPage,再巢狀Activity。
圖左是安卓,圖右是鴻蒙
二、生命週期對比:
Activity:
Activity的生命週期有七個方法。
Page Ability:
Page Ability的生命週期有六個方法。
【結論】
1、相同的是,首先兩者都是將生命週期定義為成對出現;
2、不同的是,Activity首先多了onRestart()回撥,這是在開啟一個新的當前的Activity,這個在鴻蒙的PageAbility被取消了,當前的PageAbility不會被暫停;另外PageAbility,在我的理解中,鴻蒙是將事件驅動的應用程式看做了一個很好的狀態機模型,透過控制狀態的邏輯委託不同的狀態去做不同的事情,對於每一個狀態來說又再次委託控制狀態的邏輯做出相應的動作和修改。簡單來說,就是透過將不同的狀態分開來討論,抽取共同性,使得問題的處理變得簡單。
上圖是安卓,下圖是鴻蒙