精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

免费cad大片在线观看| 亚洲free嫩bbb| 国产国语性生话播放| 欧美与亚洲与日本直播| 亚洲精品免费在线播放| 久久综合福利| 国产精品一区二区av白丝下载| 亚洲午夜精品久久久久久app| 国产视频综合在线| 久久人人爽人人片| sis001欧美| 亚洲免费av在线| 欧美日韩日本网| 99国产精品一区二区三区| 午夜亚洲伦理| 欧美日本亚洲视频| 中文天堂资源在线| 日韩精品福利一区二区三区| 欧美日韩国产一级| 国产一区亚洲二区三区| 午夜激情在线| 国产精品全国免费观看高清| 精品午夜一区二区| 国产夫妻在线观看| 美女一区二区三区| 国产999在线观看| 国产一级大片在线观看| 亚洲第一天堂| 中文字幕日韩精品在线观看| 波多野结衣福利| 精品视频高潮| 精品久久久三级丝袜| 色婷婷激情视频| 国产综合av| 色婷婷综合视频在线观看| 777av视频| 黄页网站在线观看免费| 亚洲精品一二三| 三年中文高清在线观看第6集| 国产乱子伦三级在线播放| av在线不卡观看免费观看| 91视频婷婷| 国产极品久久久| 狠狠v欧美v日韩v亚洲ⅴ| 国产狼人综合免费视频| 天天天天天天天干| 日欧美一区二区| 日本欧美精品在线| 天天干天天色综合| 视频一区二区欧美| 国产精品白嫩初高中害羞小美女| 日本免费在线观看视频| 久久一区二区三区超碰国产精品| 欧洲午夜精品久久久| 欧美一级片免费在线观看| av不卡在线| 亲爱的老师9免费观看全集电视剧| 少妇一级淫片免费放中国| 在线成人黄色| …久久精品99久久香蕉国产| 久久一区二区三区视频| 亚洲免费网址| 欧美一区二区三区艳史| 亚洲免费黄色网址| 日本va欧美va精品发布| 国产日韩欧美在线看| 97免费观看视频| 国产麻豆精品95视频| 成人在线免费观看一区| 欧美综合视频在线| 久久久久亚洲蜜桃| 亚洲国产一区在线| 羞羞视频在线观看免费| 亚洲电影在线播放| 成人在线观看黄| 欧美高清免费| 日韩精品一区二区三区在线观看 | 国产一区二区三区在线视频| 国产精品一二三区在线观看| 久久精品av| 欧美激情2020午夜免费观看| 成年人视频在线免费看| 美腿丝袜亚洲一区| 国产精品久久九九| 国产二区视频在线观看| 亚洲欧美区自拍先锋| 国产二级片在线观看| 欧美黄色三级| 欧美mv日韩mv| 国产精品情侣呻吟对白视频| 欧美精品网站| 国产成+人+综合+亚洲欧洲| 91高潮大合集爽到抽搐| 99精品久久久久久| 婷婷视频在线播放| 丁香六月综合| 日韩亚洲欧美成人一区| 偷拍夫妻性生活| 欧美高清一区| 国产精品夫妻激情| 免费看国产片在线观看| 国产精品国产三级国产有无不卡 | 日韩在线不卡av| 亚洲人成高清| 成人国产精品一区二区| 三级在线播放| 中文字幕一区二区三区免费看 | 日韩精品在线电影| 四虎影视一区二区| 亚洲男女自偷自拍| 97自拍视频| av影片在线看| 欧美小视频在线| 亚洲AV无码久久精品国产一区| 欧美精品第一区| 久久久爽爽爽美女图片| 国产精品伦一区二区三区| 久久久久久久电影| 国产黄色片免费在线观看| 97久久精品一区二区三区的观看方式| 亚洲精品永久免费精品| 国产中文字幕免费| 国产精品一区二区男女羞羞无遮挡| 欧美视频1区| 免费在线小视频| 精品999在线播放| tube国产麻豆| 九九久久精品视频| 无码免费一区二区三区免费播放| 国模冰冰炮一区二区| 亚洲电影免费观看高清完整版在线| 亚洲AV成人无码精电影在线| 免费成人美女在线观看.| 欧美一区二区三区四区五区六区 | 国产精品高潮呻吟久久av野狼| 五月婷婷久久久| 亚洲高清不卡在线观看| 丰满饥渴老女人hd| 午夜精品久久久久99热蜜桃导演 | 欧美一级特黄aaaaaa大片在线观看| 一区免费观看视频| 午夜啪啪小视频| 日韩专区精品| 成人疯狂猛交xxx| 久久亚洲天堂| 337p亚洲精品色噜噜| 成人信息集中地| 精久久久久久久久久久| 这里只有精品66| 精品中文在线| 欧美激情在线狂野欧美精品| 黄色成人一级片| 亚洲v日本v欧美v久久精品| 伊人一区二区三区久久精品 | 国产一区二区三区视频在线| 色婷婷**av毛片一区| 中文字幕精品一区二| 国产精品网曝门| 蜜桃福利午夜精品一区| 欧美一区91| 国产精品久久九九| 亚洲欧美se| 少妇高潮久久77777| 国产一区二区在线视频聊天| 亚洲美女区一区| 在线播放av网址| 亚洲影院免费| 日韩国产美国| 国产精品一区二区精品| 久久久久久久久国产| 清纯唯美亚洲色图| 欧美日韩国产天堂| 国产亚洲精品码| 久久尤物电影视频在线观看| 亚洲色精品三区二区一区| 91精品国产视频| 国模一区二区三区私拍视频| 高清电影一区| 欧美成人在线免费视频| 手机福利小视频在线播放| 欧美巨大另类极品videosbest | 国产免费无遮挡吸奶头视频| 九九视频精品免费| 少妇高潮毛片色欲ava片| 欧美色图国产精品| av色综合网| 亚洲a∨精品一区二区三区导航| 久久久av亚洲男天堂| 欧美自拍偷拍一区二区| 欧美喷潮久久久xxxxx| 国产一级在线视频| 亚洲国产精品精华液ab| 久久久男人的天堂| 久久精品国产第一区二区三区| 日韩 欧美 视频| 成人一区二区不卡免费| 免费观看在线色综合| 特色特色大片在线| 美女亚洲一区| 99久久综合狠狠综合久久止| 欧美理论影院| 欧美激情按摩在线| 免费av网站在线观看| 国产视频在线观看一区二区| 国产欧美第一页| 欧美影院精品一区| 久久久久久久久久影院| 亚洲欧美激情小说另类| 亚洲一二三四视频| 91一区一区三区| 国产又粗又猛大又黄又爽| 久久久夜精品| www.av毛片| 国内综合精品午夜久久资源| 免费看av软件| 欧美色图国产精品| 欧美日韩在线播放一区二区| 国产精品久av福利在线观看| 国产玖玖精品视频| 日韩一区精品| 欧洲日本亚洲国产区| 忘忧草在线影院两性视频| 色综合久久天天综线观看| 麻豆免费在线观看| 中文字幕亚洲欧美日韩在线不卡| 你懂的免费在线观看| 精品一区二区三区四区| 国 产 黄 色 大 片| 日韩一区二区免费电影| 国产又黄又粗又长| 欧美精品xxxxbbbb| 中文字幕乱码一区二区| 在线精品视频一区二区| 在线免费观看国产精品| 国产精品欧美日韩一区| 97视频在线观看视频免费视频| 日韩精品亚洲人成在线观看| 欧美成人午夜免费视在线看片| 国内精品久久久久久野外| 日韩在线观看你懂的| 成人77777| 综合网中文字幕| 午夜精品一区| 久久深夜福利免费观看| 国产黄色在线网站| 欧美不卡视频一区发布| 97影院秋霞午夜在线观看| 久久91亚洲人成电影网站| 中文av资源在线| 午夜精品久久久久久99热| 久久影院午夜精品| 欧美孕妇性xx| jizz亚洲女人高潮大叫| 国产一区视频在线播放| www.久久久.com| 亚洲自拍偷拍区| 成人资源在线播放| 久久99精品国产一区二区三区| 香蕉久久精品日日躁夜夜躁| 欧美日韩亚洲免费| 日韩免费看片| 日韩成人午夜影院| 亚洲精品字幕| 午夜dv内射一区二区| 久久99蜜桃精品| 久草免费资源站| 91麻豆123| 糖心vlog免费在线观看| 亚洲一区二区在线观看视频| 91在线看视频| 欧美性猛交xxxx乱大交退制版| 一区二区久久精品66国产精品 | 99国产精品久久一区二区三区| 亚洲xxx自由成熟| 动漫3d精品一区二区三区乱码| 欧美日韩国产一二| 五月婷婷亚洲| 免费 成 人 黄 色| 久久99深爱久久99精品| 欧美双性人妖o0| 欧美国产成人在线| 免费在线观看日韩| 在线一区二区视频| 成人福利小视频| 国产一区二区黄| 制服丝袜中文字幕在线| 日韩av免费在线观看| 国产精品一区二区精品视频观看| 久久久久久久免费| 66视频精品| 人妻有码中文字幕| 国产乱淫av一区二区三区| 成年人在线观看av| 亚洲图片激情小说| 区一区二在线观看| 日韩欧美一区中文| 超碰免费在线| 午夜精品www| 久久99精品久久久野外观看| 欧美精品一区在线| 国内精品福利| 亚洲精品久久久久久宅男| 91影院在线免费观看| 国产这里有精品| 欧美日韩一区视频| 欧洲亚洲在线| 久久免费精品视频| 国产日韩在线观看视频| 日日噜噜噜噜夜夜爽亚洲精品| 亚洲午夜av| 国产精品igao网网址不卡| 中文字幕av一区二区三区高| 精品成人久久久| 日韩久久免费av| 超鹏97在线| 国产日韩欧美日韩| heyzo久久| 日本黄网站免费| 99久久精品免费| 精品无码m3u8在线观看| 日韩一区二区三| www在线免费观看视频| 国产精品美女主播| 国产成人1区| 韩国日本在线视频| 91网上在线视频| 欧美大胆在线视频| 蜜臀av国内免费精品久久久夜夜| 国产精品自拍视频| 日韩欧美自拍| 成年网站在线播放| 国产丝袜美腿一区二区三区| 中文字幕视频网| 亚洲精品一区二区三区不| 秋霞伦理一区| 久久久久久久久四区三区| 亚洲三级国产| 91视频啊啊啊| 狠狠久久五月精品中文字幕| 天堂中文在线8| 欧美综合国产精品久久丁香| 欧美日日夜夜| 免费高清在线观看免费| 久久人人97超碰com| 国产一级免费视频| 国产亚洲精品一区二区| 日韩在线观看不卡| 亚洲一区二区三区午夜| 久久99国产精品麻豆| 中文字幕美女视频| 7777精品伊人久久久大香线蕉完整版 | 欧美成人三级在线播放| 国产精品久久777777| 国产精品日韩无码| 欧美成人免费全部观看天天性色| 日韩区欧美区| 我的公把我弄高潮了视频| 91蝌蚪国产九色| 中文字幕乱码在线观看| 久久夜精品香蕉| 国产精品45p| 丰满人妻中伦妇伦精品app| 国产欧美日韩麻豆91| 91免费视频播放| 国模极品一区二区三区| 亚洲bt欧美bt精品777| 午夜免费福利在线| 亚洲精品免费在线观看| 亚洲欧美日本在线观看| 国产精品日日摸夜夜添夜夜av| 综合久久99| 中文字幕一区二区三区人妻不卡| 欧洲av在线精品| 国产黄色在线网站| 精品蜜桃一区二区三区| 日韩国产欧美视频| 国产97免费视频| 国产视频一区在线| 国产激情综合| 日批视频在线免费看| 国产精品久久久久婷婷| 丰满人妻一区二区| 国产成人精品亚洲精品| 亚洲美女视频| 精品无码一区二区三区| 91精品国产综合久久小美女| 白浆视频在线观看| 一区二区三区国产福利| 成人午夜看片网址| 国产三级理论片| 久久久久久亚洲精品中文字幕| 精品久久影视| 18禁一区二区三区| 亚洲黄色毛片| 亚洲精品视频一二三| 国产成人午夜片在线观看高清观看| 特级毛片www| 欧美猛交ⅹxxx乱大交视频| 免费视频国产一区| 久久久精品人妻一区二区三区|