文章目錄
- <font color='coral'> HarmonyOS應用模型概況
- <font color='coral'> Stage模型基本概念
- <font color='coral'> Stage模型UIAbiliry的生命周期
- <font color='coral'> Stage模型的配置文件
- <font color='coral'> 寫在后面的話
- <font color='coral'>References
HarmonyOS應用模型概況
隨著系統的演進發展,HarmonyOS先后提供了兩種應用模型:
-
FA(Feature Ability)模型:HarmonyOS早期版本開始支持的模型,已經不再主推。
-
Stage模型:HarmonyOS 3.1 Developer Preview版本開始新增的模型,是目前主推且會長期演進的模型。在該模型中,由于提供了AbilityStage、WindowStage等類作為應用組件和Window窗口的“舞臺”,因此稱這種應用模型為Stage模型。
Stage模型基本概念
如下圖所示,一個項目由多個模塊組成,每一個模塊都可打包成一個獨立的Harmony Ability Package, .hap格式的包,這些模塊又可以合并起來打包成一個獨立的APP,這樣的好處的就是用到哪個模塊就安裝哪個模塊。
實際上一個工程是可以有多個模塊的
一個模塊基本上就是包含下面這三個要素,一個是源碼,一個是資源文件,以及對應的模塊,module.json5就說明了這個模塊是什么類型
在Stage模型中,實際上是提供了兩種Ability, 一種是UIAbility,顯示UI的界面的能力,還有一種是ExtensionAbilitu 面向特定場景的能力
Stage模型UIAbiliry的生命周期
上述函數的調用時序如下如所示
Stage模型的配置文件
基于Stage模型創建的工程,有兩個重要的配置文件,一個是app.json5。一個是module.json
app.json5是一個應用級別的配置文件,這個文件在AppScope下面,而我們的module.json5是一個模塊級別的配置文件,在每一個模塊下面都有一個配置文件
我們還可以看到在AppScope這個文件夾下面有一個resources文件夾,在我們的模塊下,不僅僅限于entry模塊其他的feature模塊下都有一個resources文件。 AppScope這個文件夾下面有一個resources文件夾,這個文件夾下面放的是全局的資源,在模塊下面的資源文件放置的資源只能供給這個模塊使用。
一個模塊會先在自己的資源文件夾下找自己需要的資源,同名資源只會使用在模塊resource下的資源,如果找不到才會去全局資源中尋找。
可以看一下app.json5里面的內容
{"app": {"bundleName": "com.example.myapplication","vendor": "example","versionCode": 1000000,"versionName": "1.0.0","icon": "$media:app_icon","label": "$string:app_name"}
}
bundleName是APP的唯一標識
icon標識的是這個APP的圖標
label 表示的是這個APP的名字
他們引用的都是這個AppScope下面的resources內容
module.json如下所示
{"module": {"name": "entry","type": "entry","description": "$string:module_desc","mainElement": "EntryAbility","deviceTypes": ["phone","tablet"],"deliveryWithInstall": true,"installationFree": false,"pages": "$profile:main_pages","abilities": [{"name": "EntryAbility","srcEntry": "./ets/entryability/EntryAbility.ts","description": "$string:EntryAbility_desc","icon": "$media:icon","label": "$string:EntryAbility_label","startWindowIcon": "$media:icon","startWindowBackground": "$color:start_window_background","exported": true,"skills": [{"entities": ["entity.system.home"],"actions": ["action.system.home"]}]}]}
}
在設置文件中的圖標和應用的名字是在app.json5中配置的,設置應用桌面的圖標和名字是在entry下面的module.json中配置的.
寫在后面的話
無意中發現了一個巨牛的人工智能教程,忍不住分享一下給大家。教程不僅是零基礎,通俗易懂,而且非常風趣幽默,像看小說一樣!覺得太牛了,所以分享給大家。點這里可以跳轉到教程 https://www.cbedai.net/chichoxian
References
- https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/application-model-description-0000001493584092-V2
- https://www.bilibili.com/video/BV1Ti4y1s79B?p=72&spm_id_from=pageDriver&vd_source=57623809cb42c86b58d359b44bfd8dcf