精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

OpenHarmony3.1-Ace-Formcomponent源碼解析

系統 OpenHarmony
本文主要介紹了FormComponent控件的關鍵實現機制、主要類關系及重要的處理流程,側重于改控件本身,如果需要更完整的卡片原子服務流程,還需要分析卡片管理者FormMgr。兩者聯系起來學習,才能更清楚的理解完整的流程。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

簡介

formcomponent用于展示桌面圖標和卡片。

卡片類似于安卓上的小部件,可以顯示于桌面上或者在一些其他系統服務頁面。

在展示卡片時,使用card_frontend解析hml標記語言,這是與應用展示不同的一種方式。OpenHarmony支持的應用界面開發有js的類web(hml+css+js)和ets兩種聲明式,在展示卡片時單獨使用了這種更輕量的卡片式(也是類web的,hml+css+json)。

圖標和卡片雖然來源和管理者不同,但在使用者這里,并無太大區別。桌面上的app圖標相當于1*1的卡片, 實現點擊跳轉到應用, 沒有動態刷新(allowUpate=false)。 以下分析都以卡片來進行說明。

代碼位置

/foundation/ace/ace_engine/frameworks/
├──bridge
├──card_frontend
├──js_card_parser.h
├──js_card_parser.cpp
├──card_frontend.h
├──card_frontend.cpp
├──card_frontend_delegate.h
└──card_frontend_delegate.cpp
└──declarative_frontend/jsview
├──js_form.h
└──js_form.cpp
└──core
├──common
├──form_manager.h
└──form_manager.cpp
└──components/form
├──resource
├──form_request_data.h
├──form_callback_client.h
├──form_manager_resource.h
├──form_manager_resource.cpp
├──form_manager_delegate.h
└──form_manager_delegate.cpp
├──form_component.cpp
├──form_component.h
├──form_element.cpp
├──form_element.h
├──render_form_creator.cpp
├──render_form.cpp
├──render_form.h
├──rosen_render_form.cpp
├──rosen_render_form.h
├──flutter_render_form.cpp
├──flutter_render_form.h
├──form_window.cpp
├──form_window.h
├──sub_container.cpp
└──sub_container.h

bridge/card_frontend雖然和declarative_frontend、js_frontend位于同一級目錄,但它實際上是給sub_container用的,目前并不是一種開發應用界面的方式。它的作用是解析卡片UI。

bridge/declarative_frontend/jsview下的js_form是將ets中的組件關聯到c++的ace引擎組件實例。

core/components/form下是ace引擎組件form_component。

系統架構

#夏日挑戰賽#OpenHarmony3.1-ace-formcomponent源碼解析-開源基礎軟件社區

圖 1 系統架構

卡片提供者是ace_form_ability。卡片內容是hml+css+json,ace_form_ability負責里面數據的更新。

使用者是ace_ability,顯示卡片先創建ace中組件form_component, 其中的sub_container通過card_frontend來解析前端hml+css+json展示。

一個類比:formmgr相當于服務器,提供者相當于服務器上的服務,使用者相當于客戶端。

form_component能與卡片管理者formmgr通信,將卡片被安裝的事件告知formmgr。formmgr通知卡片提供者啟動ability。

#夏日挑戰賽#OpenHarmony3.1-ace-formcomponent源碼解析-開源基礎軟件社區

圖 2 類圖

關鍵類介紹

  • FormComponentAttribute、JSForm。
    sdk的ts接口以及關聯的c類。它們是將應用里的控件翻譯為c對象。
    前端FormComponent創建時設置的屬性包括:
    id、name、bundle、ability、module、dimension(1*2, 2*2, 2*4, 4*4)、temporary。
interface FormComponentInterface {
(value: {
id: number;
name: string;
bundle: string;
ability: string;
module: string;
dimension?: FormDimension;
temporary?: boolean;
}): FormComponentAttribute;
}

JSForm在Create()中創建FormComponent時,將屬性通過RequestFormInfo傳給FormComponent實例。

設置的回調包括:

onAcquired、onError、onRouter、onUninstall。

  • FormComponent、FormElement、RenderForm[RosenRenderForm、FlutterRenderForm]。
    ace控件三件套,注意RenderForm是繼承于RenderSubContainer。
    FormComponent保存卡片屬性。
    FormElement在Prepare()中設置FormManagerDelegate的回調方法,在update()中創建SubContainer。
    RenderForm中內容很少,因為真正繪制卡片是在SubContainer里面。
  • FormManagerDelegate。
    能夠與pipeline和FormMgr通信。在標準系統中,通過FormMgr管理卡片;[在lite系統中,沒有FormMgr,通過pipeline中的PlatformResRegister管理]。
    FormMgr主動發起的ipc通過FormCallbackClient調用過來。
  • FormManager。
    本地管理SubContainer的單實例。
  • SubContainer。
    真正渲染卡片的地方。
    outSidePipelineContext_是整個FormComponent的pipeline,pipelineContext_則是SubContainer自己渲染卡片時用的pipeline。這兩句代碼可以表明二者的關系:
auto&& window = std::make_unique<FormWindow>(outSidePipelineContext_);
pipelineContext_ = AceType::MakeRefPtr<PipelineContext>(std::move(window), taskExecutor_, assetManager_, nullptr, frontend_, instanceId_);

渲染卡片使用的是CardFrontend。

  • CardFrontend、CardEventHandler、CardFrontendDelegate、JsCardParser

卡片渲染引擎。

流程分析

初始化流程

#夏日挑戰賽#OpenHarmony3.1-ace-formcomponent源碼解析-開源基礎軟件社區

圖 3 初始化時序圖

  1. 首先前端創建FormComponent組件,并設置屬性和回調。
  2. 然后ace框架在vsync事件里創建FormElement和RenderForm。
  3. FormElement初始化創建FormManagerDelegate,并注冊事件回調。
  4. FormElement在update事件中創建SubContainer,然后通過FormManagerDelegate通知卡片管理者。
  • RouterEvent只在lite系統使用,本文檔后面不做分析了。

管理中心發起事件流程

#夏日挑戰賽#OpenHarmony3.1-ace-formcomponent源碼解析-開源基礎軟件社區

圖 4 加載成功時序圖

#夏日挑戰賽#OpenHarmony3.1-ace-formcomponent源碼解析-開源基礎軟件社區

圖 5 數據更新時序圖

  1. 卡片數據更新由管理者回調通知,如果是首次則是Acquire流程,否則是Update流程。
  2. Acquire流程先將事件逐級回調通到應用js中,然后SubContainer調用CardFrontend展示卡片。
  3. Update流程只需要SubContainer調用CardFrontend更新卡片。

#夏日挑戰賽#OpenHarmony3.1-ace-formcomponent源碼解析-開源基礎軟件社區

圖 6 卸載時序圖

卸載事件是通知應用的,應用在回調里可以將FormComponent去掉。

圖 7 提供者ability退出時序圖

#夏日挑戰賽#OpenHarmony3.1-ace-formcomponent源碼解析-開源基礎軟件社區

圖 7 提供者ability退出時序圖

這個事件我的理解是提供者ability掛掉了,但是使用這這里繼續使用,通知管理者重新啟動起來。

交互事件流程

#夏日挑戰賽#OpenHarmony3.1-ace-formcomponent源碼解析-開源基礎軟件社區

圖 8 交互事件時序圖

  1. 卡片加載時,SubContainer在runcard方法中,向pipeline注冊回調。
  2. pipeline響應到事件,回調SubContainer的方法。SubContainer回調FormElement,FormElement通過FormManagerDelegate發送給卡片管理者。
  3. 事件只支持router和message兩種類型。
  4. router事件多一步調用pipeline的OnActionEvent。
  5. 最終提供者ability響應事件。提供者是一個FormExtension的子類ability,在方法onEvent(formId, message)中處理事件。
  • 與其他控件的最大區別就是,UI及UI事件代碼和事件響應代碼在兩個位置,并運行于兩個ability中。

總結

本文主要介紹了FormComponent控件的關鍵實現機制、主要類關系及重要的處理流程,側重于改控件本身,如果需要更完整的卡片原子服務流程,還需要分析卡片管理者FormMgr。兩者聯系起來學習,才能更清楚的理解完整的流程。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-08-30 18:09:57

鴻蒙HarmonyOS應用

2022-05-24 15:46:51

Wi-FiSTA模式

2022-07-27 14:30:15

分布式數據鴻蒙

2022-05-20 10:32:49

事件循環器事件隊列鴻蒙

2022-02-14 14:47:11

SystemUIOpenHarmon鴻蒙

2022-05-17 10:42:36

reboot源碼解析

2022-05-07 16:13:59

DevEcoTool鴻蒙

2021-09-16 15:08:08

鴻蒙HarmonyOS應用

2022-06-13 14:18:39

電源管理子系統耗電量服務

2021-11-08 15:04:47

鴻蒙HarmonyOS應用

2021-11-25 09:54:54

鴻蒙HarmonyOS應用

2022-01-06 16:17:58

鴻蒙HarmonyOS應用

2021-09-18 14:40:37

鴻蒙HarmonyOS應用

2022-02-17 20:57:07

OpenHarmon操作系統鴻蒙

2022-07-05 16:03:29

電源管理子系統鴻蒙

2021-12-08 15:07:51

鴻蒙HarmonyOS應用

2021-12-17 16:42:09

鴻蒙HarmonyOS應用

2022-06-01 22:41:29

轉場動畫鴻蒙

2022-04-25 09:10:50

RK3568鴻蒙

2022-07-06 20:40:27

舒爾特方格鴻蒙
點贊
收藏

51CTO技術棧公眾號

国产v在线观看| 麻豆av免费观看| 搞黄网站在线看| 99re6这里只有精品视频在线观看| 91sa在线看| 黑人狂躁日本娇小| 欧美人妖在线观看| 欧美另类videos死尸| xxxx18hd亚洲hd捆绑| 91短视频版在线观看www免费| 国产精品77777竹菊影视小说| 欧美一区二粉嫩精品国产一线天| 精品亚洲aⅴ无码一区二区三区| 日本99精品| 在线影视一区二区三区| 麻豆av一区二区三区| 国产一卡二卡三卡| 国产综合色产| 精品999在线播放| 无码人妻h动漫| 麻豆视频在线播放| 91小视频在线| 91精品在线观| 精品不卡一区二区| 91精品国产91久久综合| 日韩av在线免费观看| 在线观看国产一级片| xxxx成人| 中文字幕一区二区三区视频| 精品国产乱码久久久久| 一二三区中文字幕| 亚洲综合国产| 欧美成人精品在线播放| 免费一级做a爰片久久毛片潮| 久久免费福利| 欧美日韩一级视频| 999香蕉视频| av手机免费在线观看| 91麻豆精品视频| 91久久精品www人人做人人爽| 无码人妻丰满熟妇区五十路| 亚洲视频狠狠| 美女性感视频久久久| 色综合99久久久无码国产精品| 1313精品午夜理伦电影| 8x8x8国产精品| 国产精品无码一本二本三本色| 欧美人与牲禽动交com| 国产精品第13页| 国产一区二区不卡视频在线观看| 99国产精品久久久久久久成人| 奇米精品一区二区三区四区| 日本免费在线精品| 日本五十熟hd丰满| 亚洲大胆av| 欧美激情手机在线视频| 玖玖爱这里只有精品| 国产成人高清| 精品视频在线播放免| 老司机免费视频| 一区二区三区在线资源| 欧美一级黄色片| 制服丝袜中文字幕第一页 | 国产成人一级片| 一区在线视频观看| 欧美激情乱人伦| 欧洲猛交xxxx乱大交3| 五月婷婷亚洲| 超碰97人人做人人爱少妇| 手机看片国产日韩| 9999国产精品| www.色综合| 在线免费看av网站| 欧美69wwwcom| 色综合久久中文字幕综合网小说| 欧美交换国产一区内射| 国产一区二区三区四区三区四 | 亚洲永久精品ww.7491进入| 丁香五月缴情综合网| 精品三级在线观看| 一边摸一边做爽的视频17国产| 国产欧美啪啪| 精品蜜桃在线看| 国产草草浮力影院| 偷窥自拍亚洲色图精选| 亚洲一区999| 青青青视频在线播放| 国产精品久久久久久久| 欧美日韩成人在线播放| 久久精品女人毛片国产| 亚洲欧美成人| 国产精品日韩在线观看| 97caocao| k8久久久一区二区三区 | 第一会所sis001亚洲| 久久国内精品一国内精品| 亚洲国产美女视频| 精品成人免费| 国产精品久久不能| a天堂在线视频| bt7086福利一区国产| 久久久久久精| 欧美精品videos另类| 一区二区在线观看视频在线观看| 成人性免费视频| 国产超碰精品| 日韩三级在线观看| 亚洲最大成人网站| 先锋资源久久| 欧洲日韩成人av| 国产原创中文av| jiyouzz国产精品久久| 日韩精品一区二区三区四区五区| 国产在线高清视频| 欧美日韩精品在线视频| 天天影视色综合| 好吊妞国产欧美日韩免费观看网站 | 国产suv精品一区二区883| 久久婷婷开心| 国产日产一区二区| 婷婷一区二区三区| 欧美成人三级在线播放| 美女福利一区| 久久成人人人人精品欧| www.com亚洲| 国产很黄免费观看久久| 日韩国产在线一区| missav|免费高清av在线看| 欧美调教femdomvk| 女尊高h男高潮呻吟| 欧美激情1区| 国产精品第一视频| 少妇高潮一区二区三区99小说| 欧美高清在线一区| 99精品免费在线观看| 日韩中文字幕一区二区高清99| 一本色道久久88亚洲综合88| 久久久久久久久久久网| 日本视频一区二区三区| 国产精品日韩高清| 黄色成人在线观看| 欧美视频一区二| 中文字幕一区二区三区人妻| 欧美精品国产| 91精品国产综合久久久久久丝袜| 福利视频在线导航| 色系网站成人免费| 成人无码www在线看免费| 欧美精品麻豆| 91免费精品视频| 幼a在线观看| 在线观看不卡一区| 美国黄色a级片| 亚洲国产欧美国产综合一区| av日韩中文字幕| 国产不卡在线| 欧美一级免费观看| 神马午夜精品91| 久久电影网电视剧免费观看| 亚洲高清123| 国产经典一区| 色偷偷综合社区| 日韩不卡高清视频| 中文字幕 久热精品 视频在线 | 亚洲丰满在线| 国产91在线精品| 一区国产精品视频| 在线视频 中文字幕| 中文字幕第一页久久| 91国产精品视频在线观看| 欧美日韩在线观看视频小说| 国产精品免费看久久久香蕉| 在线激情免费视频| 欧美一区二区二区| 久久黄色免费网站| 成人免费视频视频在线观看免费| 欧美中文字幕在线观看视频| 国内精品偷拍| 琪琪亚洲精品午夜在线| 极品白浆推特女神在线观看| 在线观看一区不卡| 国产一区在线观看免费| 精品一区中文字幕| 69精品丰满人妻无码视频a片| 超碰97成人| 欧美一区二区三区免费视| 久青草国产在线| 欧美日韩第一区日日骚| avove在线播放| 成人sese在线| av之家在线观看| 久久亚洲国产| 成人av免费看| 日韩视频网站在线观看| 久久久精品一区二区三区| 性一交一乱一色一视频麻豆| 精品成人av一区| 国产黄色录像视频| 国产成人久久精品77777最新版本| 成年人网站国产| 欧美一区二区三| 999视频在线免费观看| 香蕉伊大人中文在线观看| 在线视频中文亚洲| 精品人妻伦一区二区三区久久| 欧美日韩国产精品专区| 可以免费看av的网址| 成人深夜福利app| 日本肉体xxxx裸体xxx免费| 欧美va天堂在线| 欧洲国产精品| 欧美视频二区欧美影视| 国产91热爆ts人妖在线| 午夜av在线免费观看 | 在线日本中文字幕| 亚洲高清久久久久久| 中文字幕在线观看第二页| 亚洲综合丁香婷婷六月香| 国产熟妇久久777777| 福利电影一区二区三区| 日本不卡一区在线| 国产精品入口| 欧美中文字幕在线观看视频| 精品不卡一区| 精品日本一区二区三区| 国产成人久久精品一区二区三区| 51视频国产精品一区二区| 黄色精品免费看| 日韩精品高清在线观看| 6—12呦国产精品| 欧美视频在线播放| 中文字幕精品无| 精品久久久久久亚洲精品| 草视频在线观看| 国产精品另类一区| 无码h肉动漫在线观看| 国产不卡视频一区二区三区| 欧美午夜aaaaaa免费视频| 西西人体一区二区| 欧美又粗又长又爽做受| 亚洲女同一区| av动漫免费观看| 日韩精品免费一区二区在线观看| 蜜桃成人在线| 天堂日韩电影| 黄色一区三区| 麻豆成人入口| 国产精品一区二区av| 亚洲视频精选| 97久久精品午夜一区二区| 狂野欧美性猛交xxxx| 欧美最顶级丰满的aⅴ艳星| 欧美14一18处毛片| 久久亚洲私人国产精品va| 国产精品实拍| 久久视频在线视频| 麻豆传媒在线免费| xx视频.9999.com| 秋霞影院午夜丰满少妇在线视频| 中文字幕欧美亚洲| 91电影在线播放| 日韩视频免费中文字幕| 日本视频在线| 久久影视电视剧免费网站清宫辞电视| 日韩精品黄色| 久久亚洲成人精品| 91高清在线观看视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 3d玉蒲团在线观看| 国模精品视频一区二区| 9lporm自拍视频区在线| 68精品国产免费久久久久久婷婷 | 欧美精品电影免费在线观看| 青草影视电视剧免费播放在线观看| 欧美激情视频三区| 91丝袜在线| 欧美专区日韩视频| 性欧美hd调教| 成人亚洲综合色就1024| 亚洲国产高清在线观看| 国产精品日韩一区二区三区| 青青一区二区| 性欧美videosex高清少妇| 久久精品青草| 搞av.com| 免费不卡在线观看| 四虎国产精品免费| 91在线观看地址| 中文字幕有码在线播放| 亚洲三级在线免费| 日本一级淫片色费放| 色婷婷av一区二区三区软件| 97精品久久人人爽人人爽| 精品国产亚洲在线| 精品亚洲成a人片在线观看| xxx一区二区| 蜜桃视频在线观看免费视频| 国产成人精品一区二区三区| 青草综合视频| 久久99精品久久久久久青青日本| 久久精品高清| 欧美深夜福利视频| 捆绑紧缚一区二区三区视频 | 91在线视频免费91| 国产又黄又粗又猛又爽的| 亚洲妇女屁股眼交7| 中文在线a天堂| 欧美精品一区二区久久婷婷| 精品影院一区| 国模gogo一区二区大胆私拍| 国产成人77亚洲精品www| 高清一区二区三区视频| 欧美影院三区| 日本网站免费在线观看| 国产在线国偷精品免费看| 精品少妇人妻一区二区黑料社区 | 玖玖爱免费视频| 一本到不卡精品视频在线观看| 国产又粗又猛又爽又黄视频 | 精品av在线播放| av网站免费大全| 亚洲精品v欧美精品v日韩精品| 1pondo在线播放免费| 欧美最顶级的aⅴ艳星| 99ri日韩精品视频| 日韩video| 美女www一区二区| 我和岳m愉情xxxⅹ视频| 亚洲综合色在线| 国产免费av电影| 在线电影中文日韩| 亚洲一区站长工具| 国产精品区一区二区三在线播放| 一区二区电影在线观看| 黄色成人免费看| 91色九色蝌蚪| 日韩无码精品一区二区三区| 日韩欧美亚洲一区二区| 日本中文字幕视频在线| 国产精品久久久久久超碰| 91亚洲无吗| 国产一区一区三区| 精品一区二区综合| av黄色免费在线观看| 欧美亚洲国产bt| 国产爆初菊在线观看免费视频网站 | 一二三区精品视频| 国产高清免费观看| 毛片精品免费在线观看| 99视频这里有精品| 综合久久国产| 精品亚洲成a人| 999精品视频在线观看播放| 欧美三级蜜桃2在线观看| 精品视频一二三| 国产精品第3页| 日韩欧美高清在线播放| 成人免费视频久久| 久久久精品免费免费| 中文av免费观看| 色香阁99久久精品久久久| 日本a人精品| 亚洲第一精品区| 国产精品一二二区| 校园春色 亚洲| 精品99999| 亚洲第一av| 日韩av一区二区三区在线| 免费人成黄页网站在线一区二区| 99精品欧美一区二区| 欧美日韩精品专区| 最新av在线播放| 国产成人看片| 亚洲一区二区伦理| 婷婷色一区二区三区| 在线观看国产日韩| 在线观看h片| 国产不卡一区二区在线观看| 99日韩精品| 亚洲图片第一页| 日韩一级片在线播放| а√天堂资源官网在线资源| 欧美日韩另类综合| 久久成人麻豆午夜电影| 欧美国产精品一二三| 日韩成人激情在线| 成人黄色图片网站| 日韩精品福利片午夜免费观看| 成人免费精品视频| 无码人妻黑人中文字幕| 不卡av在线播放| 欧美成人午夜77777| 五月婷婷狠狠操| 亚洲精品水蜜桃| 国产中文字幕在线看| 91在线直播亚洲| 羞羞答答国产精品www一本| 国产福利在线导航| 亚洲国产精品久久91精品| av一区在线播放|