哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ArkUI,更高效的框架設(shè)計(jì)

HarmonyOS開(kāi)發(fā)者 ? 來(lái)源:未知 ? 2022-12-21 09:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

上期文章我們講到了ArkUI的三大特性,同時(shí)提到了ArkUI是一套用于構(gòu)建HarmonyOS應(yīng)用界面的UI開(kāi)發(fā)框架,本期我們將從架構(gòu)設(shè)計(jì)上來(lái)聊聊ArkUI的設(shè)計(jì)理念。

daa6ca04-80cc-11ed-8abf-dac502259ad0.png

ArkUI架構(gòu)圖

從架構(gòu)圖可以看出,ArkUI的設(shè)計(jì)理念是在端到端整條技術(shù)路徑設(shè)計(jì)上建立了一整套完整的分層機(jī)制。接下來(lái)我們依次分層為大家介紹。

ArkUI框架的“前驅(qū)”——【前端層】

dab7c5c0-80cc-11ed-8abf-dac502259ad0.png

前端層

架構(gòu)的第一層【前端層】又稱【聲明式UI前端】,這一層包含了上期文章介紹的極簡(jiǎn)的UI信息語(yǔ)法規(guī)范,UI組件以及ArkTS語(yǔ)言特有的狀態(tài)管理機(jī)制。

dad6fc74-80cc-11ed-8abf-dac502259ad0.gif

獨(dú)立的封裝

此外,ArkUI對(duì)常用的UI組件的結(jié)構(gòu)、樣式、事件三大屬性進(jìn)行了獨(dú)立的封裝,內(nèi)置于SDK中。開(kāi)發(fā)人員可以根據(jù)項(xiàng)目設(shè)計(jì)需求,調(diào)用與設(shè)計(jì)匹配的組件函數(shù),傳入相應(yīng)的參數(shù)來(lái)完成UI描述。

db018a48-80cc-11ed-8abf-dac502259ad0.png

聲明式UI信息語(yǔ)法

同時(shí)使用聲明式UI信息語(yǔ)法,可以讓數(shù)據(jù)和View進(jìn)行聯(lián)動(dòng)更新,華為自研語(yǔ)言ArkTS為這種聯(lián)動(dòng)刷新提供了多維度的狀態(tài)管理機(jī)制,開(kāi)發(fā)人員通過(guò)對(duì)數(shù)據(jù)進(jìn)行注釋標(biāo)記,合理控制數(shù)據(jù)對(duì)應(yīng)View的更新作用范圍。

db14aab0-80cc-11ed-8abf-dac502259ad0.gif

三種更新方式

如:只單獨(dú)更新、父子單向更新,父子雙向同步更新等。

到這里,第一層【前端層】就介紹完畢了。

ArkUI框架的“核心部分”——【核心層】

接下來(lái)我們來(lái)到了框架的第二層【核心層】。

db37a920-80cc-11ed-8abf-dac502259ad0.png

核心層

這一層主要包含兩部分【方舟編譯運(yùn)行時(shí)】和【聲明式UI后端引擎】。

db4d8efc-80cc-11ed-8abf-dac502259ad0.png

方舟編譯運(yùn)行時(shí)

【核心層】的第一部分是【方舟編譯運(yùn)行時(shí)】,它涉及到開(kāi)發(fā)環(huán)境和終端環(huán)境

db6a4e66-80cc-11ed-8abf-dac502259ad0.png

運(yùn)行流程圖

【方舟編譯運(yùn)行時(shí)】的流程包含4步

db7acd5e-80cc-11ed-8abf-dac502259ad0.gif

跨語(yǔ)言調(diào)用

第1步是跨語(yǔ)言調(diào)用

ArkUI在開(kāi)發(fā)項(xiàng)目時(shí)支持多語(yǔ)言開(kāi)發(fā),為不同的開(kāi)發(fā)語(yǔ)言相互通信提供了通道,例如:提供了JS/TS與C/ C++交互的NAPI機(jī)制。

dbddfb86-80cc-11ed-8abf-dac502259ad0.png

新語(yǔ)言ArkTS

而在ArkUI支持的多種語(yǔ)言中,ArkTS是以TS為語(yǔ)法基礎(chǔ)的應(yīng)用編程語(yǔ)言。

dbf427bc-80cc-11ed-8abf-dac502259ad0.png

類型系統(tǒng)

在預(yù)編譯的過(guò)程中,數(shù)據(jù)的靜態(tài)類型信息會(huì)攜帶在生成的統(tǒng)一字節(jié)碼中,后端編譯的時(shí)候能直接利用這種類型信息加速機(jī)器碼的執(zhí)行,避免了運(yùn)行時(shí)收集對(duì)象造成的額外開(kāi)銷,同時(shí)這些類型信息被用于AOT編譯過(guò)程,使得應(yīng)用啟動(dòng)時(shí)就可以執(zhí)行AOT生成的優(yōu)化機(jī)器碼獲得高性能運(yùn)行體驗(yàn)。

dc0a46a0-80cc-11ed-8abf-dac502259ad0.png

統(tǒng)一字節(jié)碼

第2步是統(tǒng)一字節(jié)碼

完成項(xiàng)目開(kāi)發(fā)將項(xiàng)目進(jìn)行打包時(shí),方舟編譯器將編寫的高級(jí)編程語(yǔ)言通過(guò)內(nèi)置的工具鏈,編譯為一種與運(yùn)行設(shè)備和系統(tǒng)無(wú)關(guān)的可移植介質(zhì),這種介質(zhì)就叫統(tǒng)一字節(jié)碼(又稱方舟碼,abc文件),這個(gè)過(guò)程也稱為字節(jié)碼預(yù)編譯。

dc1a3506-80cc-11ed-8abf-dac502259ad0.png

統(tǒng)一字節(jié)碼

第3步是機(jī)器碼和安裝包

字節(jié)碼在設(shè)備上可以通過(guò)解釋執(zhí)行或者編譯后執(zhí)行的方式運(yùn)行,對(duì)于執(zhí)行性能要求高的部分字節(jié)碼調(diào)用AOT生成機(jī)器碼。

最后,應(yīng)用經(jīng)歷了開(kāi)發(fā)、字節(jié)碼預(yù)編譯、AOT靜態(tài)優(yōu)化編譯、打包簽名就形成了一個(gè)完整安裝包,這樣一來(lái)就終于可以在設(shè)備上運(yùn)行預(yù)覽了。

dc368abc-80cc-11ed-8abf-dac502259ad0.png

GC機(jī)制

第4步是GC(Garbage Collection)機(jī)制

dc4db00c-80cc-11ed-8abf-dac502259ad0.png

搭載HarmonyOS系統(tǒng)的設(shè)備

對(duì)比其他設(shè)備,搭載HarmonyOS系統(tǒng)的設(shè)備上運(yùn)行應(yīng)用時(shí)會(huì)顯得特別流暢,這里的秘密是什么呢?

dc68123a-80cc-11ed-8abf-dac502259ad0.png

GC機(jī)制技術(shù)問(wèn)題

由于在傳統(tǒng)的操作系統(tǒng)中,基于Tracing的GC存在著STW(Stop The World)階段暫停時(shí)間較長(zhǎng)的問(wèn)題。

dc79b72e-80cc-11ed-8abf-dac502259ad0.png

STW

當(dāng)手機(jī)內(nèi)存資源不夠用的時(shí)候,傳統(tǒng)操作系統(tǒng)虛擬機(jī)就會(huì)召喚GC(Garbage Collection)封鎖公路,暫停手機(jī)運(yùn)行的所有線程,等待它回收內(nèi)存空間。

STW暫停時(shí)間較長(zhǎng)

而且STW(Stop The World)階段的暫停時(shí)間段較長(zhǎng),開(kāi)發(fā)者無(wú)法精確控制和干預(yù),在性能較差的手機(jī)上會(huì)表現(xiàn)出較強(qiáng)的“間歇性”卡頓。這就好比行駛在市區(qū)道路的車輛,在經(jīng)過(guò)每個(gè)路口都遇到了較長(zhǎng)時(shí)間的紅燈等待,一路走走停停,行駛體驗(yàn)感較差。

ddd195f6-80cc-11ed-8abf-dac502259ad0.png

HPP GC

而方舟編譯運(yùn)行時(shí)在內(nèi)存回收方面重新設(shè)計(jì),基于Tracing GC推出了高性能內(nèi)存回收技術(shù)——HPP GC(High Performance Partial Garbage Collection)。HPP GC綜合了多種Tracing GC算法,根據(jù)不同對(duì)象區(qū)域,采用不同的回收方式。這種GC機(jī)制可以縮短STW階段的時(shí)長(zhǎng),用在市區(qū)駕駛車輛來(lái)比喻,就是縮短了車輛在路口紅燈等待的時(shí)間,增加了行駛的體驗(yàn)感。

ddec4ba8-80cc-11ed-8abf-dac502259ad0.gif

HPP GC

接下來(lái)我們來(lái)看核心層的第二部分——聲明式UI后端引擎。

它在HarmonyOS系統(tǒng)終端運(yùn)行時(shí),由C++編寫UI的基本組件、布局、動(dòng)效和事件組成。供UI前端開(kāi)發(fā)人員調(diào)用。

de127f80-80cc-11ed-8abf-dac502259ad0.gif

渲染管線

渲染管線是位于運(yùn)行時(shí)內(nèi)部的一個(gè)獨(dú)立的渲染線程,它負(fù)責(zé)支配CPU多線程地去工作,讓CPU為GPU提供更多的渲染數(shù)據(jù),最大額度的調(diào)取GPU的能力。

到此,【核心層】已全部介紹完畢。

通過(guò)本期ArkUI架構(gòu)的學(xué)習(xí),相信大家已經(jīng)了解方舟編譯運(yùn)行時(shí)的技術(shù)和流程,也對(duì)ArkUI的設(shè)計(jì)理念有了基礎(chǔ)的認(rèn)識(shí)。完整版的內(nèi)容可查看上方的視頻,我們下期再見(jiàn)~

END

想了解更多HarmonyOS技術(shù)?

后臺(tái)留言給我們

立刻安排!


原文標(biāo)題:ArkUI,更高效的框架設(shè)計(jì)

文章出處:【微信公眾號(hào):HarmonyOS開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2156

    瀏覽量

    36269

原文標(biāo)題:ArkUI,更高效的框架設(shè)計(jì)

文章出處:【微信號(hào):HarmonyOS_Dev,微信公眾號(hào):HarmonyOS開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【HarmonyOS next】ArkUI-X新聞熱搜聚合App【進(jìn)階】

    API,展示了多平臺(tái)榜單數(shù)據(jù)并支持網(wǎng)頁(yè)詳情查看。項(xiàng)目采用ArkUI框架開(kāi)發(fā),現(xiàn)通過(guò)ArkUI-X實(shí)現(xiàn)iOS平臺(tái)的無(wú)縫遷移。 1.2 核心技術(shù)棧 HarmonyOS:原生開(kāi)發(fā)平臺(tái) ArkUI
    發(fā)表于 06-28 21:43

    【HarmonyOS next】ArkUI-X休閑益智兒童拼圖【進(jìn)階】

    一、前言:當(dāng)拼圖遇上跨端開(kāi)發(fā) 最近在開(kāi)發(fā)一款跨平臺(tái)的兒童拼圖游戲時(shí),我深刻體會(huì)到了ArkUI-X框架的威力——同一套代碼竟能同時(shí)在華為Mate60 Pro和iPhone15上流暢運(yùn)行!這不僅節(jié)省
    發(fā)表于 06-28 21:41

    【HarmonyOS next】ArkUI-X休閑益智猜字謎【基礎(chǔ)】

    下圖是在iOS中的運(yùn)行效果 下圖是在HarmonyOS中的運(yùn)行效果 今天咱們來(lái)聊聊如何用ArkUI-X這個(gè)新興框架實(shí)現(xiàn)跨端開(kāi)發(fā),通過(guò)一個(gè)猜字謎小游戲帶大家感受它的開(kāi)發(fā)魅力。本文不僅能讓你看到
    發(fā)表于 06-26 20:01

    ArkUI-X通過(guò)Stage模型開(kāi)發(fā)Android端應(yīng)用指南(一)

    簡(jiǎn)介 本文介紹將ArkUI框架擴(kuò)展到Android平臺(tái)所需要的必要的類及其使用說(shuō)明,開(kāi)發(fā)者基于OpenHarmony,可復(fù)用大部分的應(yīng)用代碼(生命周期等)并可以部署到Android平臺(tái),降低跨平臺(tái)
    發(fā)表于 06-24 22:16

    ArkUI介紹

    ArkUI(方舟UI框架)為應(yīng)用的UI開(kāi)發(fā)提供了完整的基礎(chǔ)設(shè)施,包括簡(jiǎn)潔的UI語(yǔ)法、豐富的UI功能(組件、布局、動(dòng)畫以及交互事件),以及實(shí)時(shí)界面預(yù)覽工具等,可以支持開(kāi)發(fā)者進(jìn)行可視化界面開(kāi)發(fā)
    發(fā)表于 06-24 06:41

    ArkUI-X案例解析

    != undefined) { this.backDisplaySyncSlow?.stop(); } } } 由于當(dāng)前ArkUI-X框架未適配這套方法,在arkui-x側(cè)實(shí)際上使用了
    發(fā)表于 06-23 22:40

    HarmonyOS NEXT應(yīng)用元服務(wù)布局優(yōu)化ArkUI框架執(zhí)行流程

    一、 ArkUI框架執(zhí)行流程 在使用ArkUI開(kāi)發(fā)中,我們通過(guò)布局組件和基礎(chǔ)組件進(jìn)行界面描述,這些描述會(huì)呈現(xiàn)出一個(gè)組件樹(shù)的結(jié)構(gòu),基礎(chǔ)組件在其中為葉子結(jié)點(diǎn),布局組件則是中間節(jié)點(diǎn),可以把這棵樹(shù)稱之為
    發(fā)表于 06-23 09:41

    ArkUI-X平臺(tái)橋接Bridge說(shuō)明

    簡(jiǎn)介 平臺(tái)橋接用于客戶端(ArkUI)和平臺(tái)(Android或iOS)之間傳遞消息,即用于ArkUI與平臺(tái)雙向數(shù)據(jù)傳遞、ArkUI側(cè)調(diào)用平臺(tái)的方法、平臺(tái)調(diào)用ArkUI側(cè)的方法。 以An
    發(fā)表于 06-19 23:12

    ArkUI-X應(yīng)用工程結(jié)構(gòu)說(shuō)明

    簡(jiǎn)介 本文檔配套ArkUI-X,將OpenHarmony ArkUI開(kāi)發(fā)框架擴(kuò)展到不同的OS平臺(tái),比如Android和iOS平臺(tái),讓開(kāi)發(fā)者基于ArkUI,可復(fù)用大部分的應(yīng)用代碼(UI以
    發(fā)表于 06-19 23:11

    ArkUI-X跨平臺(tái)應(yīng)用改造指南

    工作量大幅增加,開(kāi)發(fā)成本也隨之上升,而且很難保持一致的交互體驗(yàn)。 ArkUI-X 跨平臺(tái)框架是基于 HarmonyOS 打造的跨端跨平臺(tái)框架,能實(shí)現(xiàn) “一次開(kāi)發(fā)、三平臺(tái)部署”。 基于ArkTS開(kāi)發(fā)
    發(fā)表于 06-16 23:05

    ArkUI-X與Android聯(lián)動(dòng)編譯開(kāi)發(fā)指南

    .arkui-x/android/app/build.gradle目錄下設(shè)置configBuildFlag開(kāi)關(guān),可觸發(fā)聯(lián)動(dòng)ArkTS源碼編譯腳本,默認(rèn)為false,不執(zhí)行編譯ArkTS腳本文件。 //執(zhí)行聯(lián)動(dòng)
    發(fā)表于 06-16 22:55

    ArkUI-X在Android平臺(tái)動(dòng)態(tài)化開(kāi)發(fā)指南

    本文介紹如何在Android平臺(tái)進(jìn)行ArkUI-X動(dòng)態(tài)化開(kāi)發(fā),包括動(dòng)態(tài)化目錄規(guī)則及約束。 適用場(chǎng)景 動(dòng)態(tài)化主要包括兩個(gè)典型場(chǎng)景: 場(chǎng)景1:框架動(dòng)態(tài)化,為了降低應(yīng)用ROM體積占用,及滿足動(dòng)態(tài)升級(jí)框架
    發(fā)表于 06-15 23:33

    ArkUI-X框架LogInterface使用指南

    ArkUI-X框架支持日志攔截能力,Android側(cè)提供原生接口,用于注入LogInterface接口,框架日志及ts日志通過(guò)該接口輸出,本文的核心內(nèi)容是介紹如何在Android平臺(tái)上有效利用
    發(fā)表于 06-15 23:20

    ArkUI-X與Android消息通信

    平臺(tái)橋接用于客戶端(ArkUI)和平臺(tái)(Android或iOS)之間傳遞消息,即用于ArkUI與平臺(tái)雙向數(shù)據(jù)傳遞、ArkUI側(cè)調(diào)用平臺(tái)的方法、平臺(tái)調(diào)用ArkUI側(cè)的方法。本文主要介紹A
    發(fā)表于 06-08 22:15

    ArkUI-X跨平臺(tái)框架接入指南

    ArkUI跨平臺(tái)框架(ArkUI-X)進(jìn)一步將ArkUI開(kāi)發(fā)框架擴(kuò)展到了多個(gè)OS平臺(tái):目前支持OpenHarmony、Android、 iO
    發(fā)表于 05-18 18:21
    丹寨县| 昭通市| 射洪县| 思茅市| 富源县| 沙坪坝区| 儋州市| 大方县| 紫阳县| 秦安县| 江口县| 洛阳市| 满洲里市| 左云县| 巴青县| 兰考县| 哈巴河县| 黔江区| 晋城| 南木林县| 宜昌市| 巴南区| 津南区| 铅山县| 丹凤县| 高碑店市| 昆山市| 汝南县| 岳普湖县| 翁牛特旗| 蓬莱市| 安仁县| 牟定县| 景谷| 灌云县| 古丈县| 扶风县| 军事| 甘南县| 邓州市| 淳化县|