一、實現(xiàn)原理
圖1?ArkTS卡片實現(xiàn)原理
?
卡片使用方:顯示卡片內(nèi)容的宿主應(yīng)用,控制卡片在宿主中展示的位置,當前僅系統(tǒng)應(yīng)用可以作為卡片使用方。
卡片提供方:提供卡片顯示內(nèi)容的應(yīng)用,控制卡片的顯示內(nèi)容、控件布局以及控件點擊事件。
卡片管理服務(wù):用于管理系統(tǒng)中所添加卡片的常駐代理服務(wù),提供formProvider接口能力,同時提供卡片對象的管理與使用以及卡片周期性刷新等能力。
卡片渲染服務(wù):用于管理卡片渲染實例,渲染實例與卡片使用方上的卡片組件一一綁定??ㄆ秩痉?wù)運行卡片頁面代碼widgets.abc進行渲染,并將渲染后的數(shù)據(jù)發(fā)送至卡片使用方對應(yīng)的卡片組件。
圖2?ArkTS卡片渲染服務(wù)運行原理
?
與JS卡片相比,ArkTS卡片支持在卡片中運行邏輯代碼,為確保ArkTS卡片發(fā)生問題后不影響卡片使用方應(yīng)用的使用,ArkTS卡片新增了卡片渲染服務(wù)用于運行卡片頁面代碼widgets.abc,卡片渲染服務(wù)由卡片管理服務(wù)管理。卡片使用方的每個卡片組件都對應(yīng)了卡片渲染服務(wù)里的一個渲染實例,同一應(yīng)用提供方的渲染實例運行在同一個虛擬機運行環(huán)境中,不同應(yīng)用提供方的渲染實例運行在不同的虛擬機運行環(huán)境中,通過虛擬機運行環(huán)境隔離不同應(yīng)用提供方卡片之間的資源與狀態(tài)。開發(fā)過程中需要注意的是globalThis對象的使用,相同應(yīng)用提供方的卡片globalThis對象是同一個,不同應(yīng)用提供方的卡片globalThis對象是不同的。
二、ArkTS卡片的優(yōu)勢
卡片作為應(yīng)用的一個快捷入口,ArkTS卡片相較于JS卡片具備如下幾點優(yōu)勢:
統(tǒng)一開發(fā)范式,提升開發(fā)體驗和開發(fā)效率。
OpenHarmony在2022年發(fā)布了聲明式范式的UI開發(fā)框架,而卡片還延續(xù)了css/hml/json三段式類Web范式的開發(fā)方式,提高了開發(fā)者的學習成本,提供ArkTS卡片能力后,統(tǒng)一了卡片和頁面的開發(fā)范式,頁面的布局可以直接復(fù)用到卡片布局中,提升開發(fā)體驗和開發(fā)效率。
圖3?卡片工程結(jié)構(gòu)對比
文章來源:http://www.zghlxwxcb.cn/news/detail-604633.html
增強了卡片的能力,使卡片更加萬能。
新增了動效的能力:ArkTS卡片開放了屬性動畫和顯式動畫的能力,使卡片的交互更加友好。
新增了自定義繪制的能力:ArkTS卡片開放了Canvas畫布組件,卡片可以使用自定義繪制的能力構(gòu)建更多樣的顯示和交互效果。
允許卡片中運行邏輯代碼:開放邏輯代碼運行后很多業(yè)務(wù)邏輯可以在卡片內(nèi)部自閉環(huán),拓寬了卡片的業(yè)務(wù)適用場景。
三、ArkTS卡片的約束
ArkTS卡片相較于JS卡片具備了更加豐富的能力,但也增加了使用卡片進行惡意行為的風險。由于ArkTS卡片顯示在使用方應(yīng)用中,使用方應(yīng)用一般為桌面應(yīng)用,為確保桌面的使用體驗以及功耗相關(guān)考慮,對ArkTS卡片的能力做了以下約束:
不支持加載so。
不支持使用native語言開發(fā)。
僅支持聲明式范式的部分組件、事件、動效、數(shù)據(jù)管理、狀態(tài)管理和API能力。
卡片的事件處理和使用方的事件處理是獨立的,建議在使用方支持左右滑動的場景下卡片內(nèi)容不要使用左右滑動功能的組件,以防手勢沖突影響交互體驗。
除此之外,當前ArkTS卡片還存在如下約束:
暫不支持導(dǎo)入模塊。
暫不支持極速預(yù)覽。
暫不支持斷點調(diào)試能力。
暫不支持Hot Reload熱重載。文章來源地址http://www.zghlxwxcb.cn/news/detail-604633.html
到了這里,關(guān)于HarmonyOS/OpenHarmony元服務(wù)開發(fā)-ArkTS卡片運行機制的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!