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

BlockFramework —— 客戶端模塊化業務開發框架

開發
BlockFramework 作為一套客戶端業務解耦框架,具備業務分層、組裝以及協同的能力,業務方基于此框架能夠輕易實現業務解耦,獨立開展邏輯迭代,從而提升架構的穩定性,降低維護成本,并提高業務迭代的效率。

前言

在大型 APP 的開發進程中,多個業務方向或團隊共同開發同一頁面的現象屢見不鮮。倘若沒有良好的架構作為支撐,各業務之間的邏輯極易相互耦合,進而致使架構迅速惡化,這無疑會使業務開發與維護的成本增加。BlockFramework 作為一套客戶端業務解耦框架,具備業務分層、組裝以及協同的能力,業務方基于此框架能夠輕易實現業務解耦,獨立開展邏輯迭代,從而提升架構的穩定性,降低維護成本,并提高業務迭代的效率。BlockFramework 主要有 4 大特性:

  • 「清晰的業務解耦機制」:開發者使用 BlockFramework 能夠輕松地將復雜的業務邏輯拆解成多個獨立的子「Block」,實現代碼上的物理隔離,不同業務的開發者只需要聚焦于所屬業務Block開發,降低代碼復雜度從而提升人效;同時Block支持跨場景復用,開發者可將基礎能力抽離成獨立的Block后應用到不同的場景中,減少冗余代碼,降低維護成本;
  • 「高性能的UI組裝能力」:BlockFramework基于樹狀結構搭建界面UI,完美契合Android系統的布局樹結構,開發者只需要創建各個簡單的子布局Block,然后按照業務邏輯構建Block之間的父子關系,便能輕松搭建出一個復雜頁面。同時相較于常用的UI組裝方式,BlockFramework在UI組裝過程中集成了異步inflate、異步View創建等性能優化手段,高效優化頁面性能;
  • 「豐富的通信機制」:BlockFramework提供了Block之間的多種通信機制(一對一、一對多、多對一),用于實現Block之間的聯動交互能力,通信機制通過接口抽象、事件訂閱/分發的方式,避免了Block與Block之間直接交互,保證了Block的獨立性和復用性;
  • 「統一的開發范式」:BlockFramework 的接入和開發流程均提供了標準規范,使得不同業務的開發者能夠建立統一的開發認知,從而降低跨線研發成本,提升整體研發效率。

    各種客制化場景,標紅區域為各Block:

圖片

BlockFramework已經在Github開源,歡迎大家多多支持。開源地址:https://github.com/bytedance/BlockFramework 

Block單元

Block是BlockFramework的基本構成單元,一個復雜頁面可由多個Block組裝而成。Block支持UI配置,與安卓View樹結構完美適配,能夠渲染各種不同的場景;同時Block擁有獨立的,各Block可以單獨通過網絡獲取數據、渲染視圖等等。

樹狀管理機制

Block按照樹形結構進行組裝和管理,一個場景對應一顆Block樹,樹形結構的好處在于:

  • 對于客戶端,通常基于頁面的布局結構進行業務開發,而布局結構對應于View樹結構,因此,Block構建樹狀結構更符合認知,通過Block樹便能清晰的看出整個頁面的邏輯結構;
  • 樹是一種去中心化的結構,每個子Block只能被自己的父Block管理,Manager只需要驅動rootBlock便能操作整顆Block樹,能夠有效降低Manager自身的復雜度。
  • 樹狀結構易于管理和分析,能夠通過防止樹形結構劣化調整頁面的結構劃分,理想狀態下,一個場景拆分的Block樹能夠達到一顆平衡樹結構。

圖片

 Block提供了方式進行組裝,業務方能直觀的看出各Block之間的父子關系:

override fun assembleSubBlocks(assembler: BlockAssembler) {
    assembler.assemble {
        addBlock {
            instance = {
                MainContentBlock(blockContext)
            }
            parentId = R.id.main_content_block_container
        }
        addBlock {
            instance = {
                BottomInfoBlock(blockContext)
            }
            parentId = R.id.bottom_info_block_container
        }
        addBlock {
            instance = {
                RightInteractBlock(blockContext)
            }
            parentId = R.id.right_interact_block_container
        }
    }
}

生命周期管理

Block本身是一個生命周期單元,遵循Jetpack LifeCycle組件的生命周期節點設計,即onCreate() -> onDestory(),開發者能夠快速上手,同時易于對老場景進行遷移。

open class BaseBlock<DATA, MODEL : IBlockModel<DATA>>(val blockContext: IBlockContext) : AbstractLifecycleBlock() {


    open fun onRegister() {}
    override fun onCreate() {}
    override fun onStart() {}
    override fun onResume() {}
    override fun onPause() {}
    override fun onStop() {}
    override fun onDestroy() {}
    override fun onUnRegister() {}


}

「Block UML設計圖」

圖片

通信機制

在業務場景中,不同的業務模塊經常需要通信,如處于不同模塊的視圖需要根據用戶操作發生一些聯動。在這些情況下,如果讓模塊與模塊直接進行依賴,就無法避免模塊之間的耦合,這樣既無法保證模塊的獨立性,也影響可復用性。因此,Block框架基于SPI協議和觀察者模式實現了一套通信機制,各Block通過發現服務和廣播通信,能夠有效降低Block之間的耦合。

Block組內通信

Block通過一套MessageCenter機制實現內部通信,主要包括兩種形式:

  • 「一對一調用」:基于SPI模式,對外暴露接口,其他Block可以通過接口獲取其他Block對外暴露的能力;
  • 「一對多通信」:基于觀察者模式,可以通過定義Event進行事件廣播,所有訂閱該事件的Block默認都會收到該Event;

圖片

 「Block通信范式樹形結構約束」

  • 根據Block的樹形結構,對通信機制加入樹形結構的約束,即子節點只能訪問其父節點的service,如果訪問不到,再向上一級父Block查詢,直到找到為止,該方式能夠直觀的分析出一個場景拆分Block后的各Block之間的通信依賴情況。

Block組間通信

  • 用于實現Block組件內部與外部邏輯交互,通過BlockDepend實現,業務場景向Block注入Depend后,在Block內部便能隨時獲取到Depend進行通信。

圖片

高性能特性

Block內置了不少高性能特性,相較Android原生的頁面構建機制,BlockFramework提供了異步組裝View異步數據綁定等多個優化手段,旨在更為極致的渲染頁面。

異步組裝View

Block支持將復雜頁面拆分一個個小單元,每一個小單元可對應一處簡單UI結構,如果不做優化,這個Block在inflate和組裝View時會默認在主線程執行,而實際上,由于每一個Block的View都是獨立進行inflate,因此,可以各Block的View創建的過程切換到子程序異步進行,完成后切換回到主線程組裝View,相較于整體在主線程創建View耗時更短,經過對比分析,異步組裝View能縮短約20%的耗時。

圖片

異步數據綁定

Block提供了異步數據綁定邏輯,支持開發者將耗時邏輯放到子線程執行,并提供了切換回主線程的回調,讓開發者更方便的執行耗時邏輯。

圖片

override fun bindModel(model: MODEL?) {
    if (enableAsyncBind()) {
        syncBind(model)
        Executor.work().post {
            asyncBind(model) {
                Executor.main().post {
                    it.invoke()
                }
            }
        }
    } else {
        syncBind(model)
        asyncBind(model) {
            it.invoke()
        }
    }
}

結語

BlockFramework是西瓜視頻團隊從業務中沉淀出的組件,經過不斷地完善和迭代,目前已經成為西瓜視頻詳情頁、橫屏內流、Feed列表、Feed卡片、業務播放器等多個核心場景的底層架構基礎,經過驗證,BlockFramework在性能和效率上都取得不錯的收益。后續我們會在更多的業務場景落地,同時在性能和架構上進一步優化。此外,BlockFramework已經推廣到字節系多個產品,尤其在西瓜鴻蒙版、鮮時光、抖音精選上均得到廣泛認可和應用。

責任編輯:龐桂玉 來源: 字節跳動技術團隊
相關推薦

2012-11-28 11:05:42

IBMdW

2013-10-10 13:48:45

云數據中心模塊化數據中心華為

2012-09-19 14:27:16

Worklight

2009-06-12 19:18:08

REST客戶端框架JavaScript

2019-08-28 16:18:39

JavaScriptJS前端

2010-03-24 08:34:44

OSGiJava模塊化

2010-08-02 09:10:36

Flex模塊化

2011-01-11 13:40:44

webcssdiv

2013-07-22 14:29:35

iOS開發ASIHTTPRequ

2009-12-25 15:12:01

WPF平臺

2017-02-13 18:46:38

Android模塊化組件化

2011-08-17 10:10:59

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端

2009-04-22 18:42:13

Vmware虛擬化英特爾

2009-05-22 18:42:12

虛擬化服務器IT

2010-05-31 10:11:32

瘦客戶端

2011-10-26 13:17:05

2013-07-04 10:01:04

2011-03-24 13:00:31

配置nagios客戶端

2010-12-21 11:03:15

獲取客戶端證書
點贊
收藏

51CTO技術棧公眾號

欧美性xxxx在线播放| 亚洲精品久久久| 日本韩国精品在线| 亚洲成人在线视频网站| 国产成人毛毛毛片| 久久国产高清| 欧美美最猛性xxxxxx| 久久久久久久久免费看无码| 国产三级一区| 精品动漫一区二区| 在线观看欧美激情| 天天舔天天干天天操| 久久精品国产精品亚洲精品 | 国产精品国产亚洲伊人久久| 三级影片在线看| 亚洲精品白浆高清| 日韩一区国产二区欧美三区| 成人在线免费在线观看| 国产cdts系列另类在线观看| www一区二区| 91免费在线观看网站| 亚洲天堂网视频| 欧美专区在线| 久久久久久久香蕉网| 91久久久久久久久久久久久久| 美腿丝袜亚洲图片| 51精品秘密在线观看| 热久久精品国产| 国产直播在线| 亚洲综合色视频| 在线一区高清| 91精品国产91久久久久游泳池| 波多野结衣中文字幕一区二区三区 | 台湾成人av| 天堂а√在线8种子蜜桃视频| 国产传媒久久文化传媒| 国产欧美韩国高清| 国产男人搡女人免费视频| 在线观看的网站你懂的| 午夜激情久久| 亚洲美女视频网| 成人做爰www看视频软件| 亚洲成人最新网站| 亚洲激情网站免费观看| 天天综合色天天综合色hd| 五月婷婷六月丁香综合| 欧美黄色aaaa| 午夜精品久久久久影视| 国产成年人在线观看| 国内在线精品| yiren22亚洲综合| 欧美日韩一区二区在线播放| 免费看黄在线看| 黄网站在线观| 亚洲一区二区三区国产| www.日本三级| 色噜噜狠狠狠综合欧洲色8| 亚洲日本青草视频在线怡红院| 亚洲国产精品视频一区| 无遮挡的视频在线观看| 国产精品国产三级国产aⅴ入口| 深夜福利成人| 欧美三级电影一区二区三区| 中文字幕一区二区三区av| 在线观看福利一区| av在线app| 亚洲国产乱码最新视频| 91国视频在线| 欧洲成人一区| 4438x亚洲最大成人网| 五月天六月丁香| 伊人久久亚洲| 国产视频综合在线| 日韩福利在线视频| 91精品国偷自产在线电影 | 欧美日韩中文字幕精品| www.色欧美| 在线精品视频一区| 日韩久久免费视频| 成人无码精品1区2区3区免费看 | 国产欧美一区视频| 一区二区不卡在线| 第四色日韩影片| 日韩欧美黄色动漫| 手机av在线网| 99精品国产高清一区二区麻豆| 日韩精品免费视频| 亚洲女同二女同志奶水| 激情另类综合| 国产精品久久电影观看| а√中文在线资源库| 91免费在线看| 免费观看黄色大片| 蜜桃麻豆影像在线观看| 欧美日韩成人在线| 欧美xxxxx精品| 久久影院一区| 69久久夜色精品国产69| 亚洲精品无码久久久久| 国产高清精品网站| 日本中文不卡| 黄色软件视频在线观看| 欧美日本一道本在线视频| 日本黄色动态图| 66视频精品| 欧美在线亚洲在线| www.色日本| 中文av一区二区| 欧美久久久久久久久久久久久| 免费日韩成人| 亚洲男人的天堂在线播放| 男的操女的网站| 奇米色777欧美一区二区| 国产一区二区免费电影| 国产原创精品视频| 色猫猫国产区一区二在线视频| 4438x全国最大成人| 日韩欧美三级| 日本精品久久久久影院| 亚洲欧美黄色片| 亚洲日本va午夜在线影院| 激情五月亚洲色图| 久久大胆人体视频| 欧美另类精品xxxx孕妇| 97成人免费视频| 国产欧美日韩在线看| 久久亚洲中文字幕无码| 18国产精品| 久久综合久久八八| 亚洲熟女乱色一区二区三区久久久 | 中文一区一区三区免费在线观看| 国产精品美女久久久久av超清| 色婷婷视频在线| 亚洲图片一区二区| 久久久久久无码精品人妻一区二区| 色乱码一区二区三区网站| 国产成+人+综合+亚洲欧美丁香花| 黑人乱码一区二区三区av| 一区二区三区四区视频精品免费 | 亚洲一区二区三区四区在线免费观看 | 色悠悠国产精品| 中文字幕免费观看| 久久九九全国免费| 国语对白做受xxxxx在线中国| 六月丁香久久丫| 97色在线观看| 天天干,夜夜爽| 午夜国产精品影院在线观看| 91精品啪在线观看国产| 影音先锋国产精品| 国产精品美女黄网| 91破解版在线观看| 亚洲精品久久久久| 亚洲 欧美 日韩 综合| 91最新地址在线播放| 黄色免费视频大全| 国产精品密蕾丝视频下载| 欧美专区福利在线| 国产一区二区三区福利| 欧美性大战久久久久久久| 极品久久久久久久| 激情六月婷婷久久| 日韩精品一区二区三区电影| 一区二区三区四区高清视频| 国自产精品手机在线观看视频| 婷婷丁香花五月天| 色老综合老女人久久久| 日日操免费视频| 国产乱淫av一区二区三区 | 肉色丝袜一区二区| 亚洲欧美日韩国产yyy | 日韩一级黄色片| 日本少妇做爰全过程毛片| 99精品视频在线观看免费| 免费激情视频在线观看| 欧美a级片视频| 99精品国产高清一区二区| 18aaaa精品欧美大片h| 亚洲色图激情小说| 国产精品综合在线| 亚洲成人动漫一区| 国产精品酒店视频| 国产69精品久久99不卡| 欧美性猛交xxx乱久交| 一区二区蜜桃| 欧美自拍资源在线| 久久爱www.| 日本精品视频在线播放| 岛国中文字幕在线| 精品亚洲男同gayvideo网站| 亚洲视频久久久| 精品色蜜蜜精品视频在线观看| 国产成人免费观看网站| 国产宾馆实践打屁股91| 国产精品久久久久9999小说| 狠狠久久婷婷| 欧美日韩精品久久久免费观看| 四虎精品一区二区免费| 51视频国产精品一区二区| 麻豆传媒在线完整视频| 日韩精品在线免费观看| 国产精品主播一区二区| 在线视频综合导航| 国产精品9191| 国产精品久久毛片| 国产精品jizz| 国产大片一区二区| 在线能看的av网站| 日韩成人伦理电影在线观看| 日本福利视频一区| 久久久久久免费视频| 日本一区二区免费看| 国产精品调教视频| 亚洲一区二区三区香蕉| 日韩三区免费| 2021久久精品国产99国产精品| 久热国产在线| 在线亚洲男人天堂| 欧美高清电影在线| 亚洲变态欧美另类捆绑| 国产强伦人妻毛片| 欧美日韩在线三区| 成人公开免费视频| 狠狠色噜噜狠狠狠狠97| 妺妺窝人体色www聚色窝仙踪| 国产精品乱人伦| 欧美日韩国产黄色| 久久综合色8888| 国产制服丝袜在线| 成人h动漫精品一区二| 国产又粗又猛又爽又黄| 国模无码大尺度一区二区三区| 国内自拍视频一区| 久久精品亚洲一区二区| 欧美在线观看www| 99热这里只有成人精品国产| 欧美一区二区三区综合| 亚洲综合色站| 久久久久福利视频| 欧美精品首页| 大伊香蕉精品视频在线| 亚洲黄网站黄| aa在线观看视频| 一区二区三区导航| 久久国产亚洲精品无码| 久久国产日本精品| 午夜精品久久久内射近拍高清 | 日本欧美黄网站| 爱情电影社保片一区| 日本成人激情视频| 日韩国产网站| 国产日本欧美一区| 成人免费91| 高清免费日韩| 日韩超碰人人爽人人做人人添| 久久av一区二区| 国产最新精品| 一区二区三区四区欧美日韩| 国产高清久久| 嫩草影院中文字幕| 亚洲美女一区| 日本一极黄色片| 精久久久久久久久久久| 日韩精品国产一区| 91在线观看一区二区| 亚州精品国产| 日韩在线欧美在线| 黄网站在线免费| 欧美老女人性视频| 久久99亚洲网美利坚合众国| 午夜精品一区二区三区在线视| 欧美办公室脚交xxxx| 欧美一区在线直播| jizz亚洲女人高潮大叫| 亚洲一区二区在线播放| 久久97久久97精品免视看秋霞| 欧美婷婷久久| 国产精品久久天天影视| 亚洲精品久久久久久久蜜桃臀| 亚洲一区不卡| 久热在线视频观看| 成人av网站在线| 日本免费www| 一区二区三区日韩欧美精品| 五月婷婷亚洲综合| 欧美日韩高清一区二区不卡| 人妻无码中文字幕| 亚洲一级黄色片| 在线中文字幕视频观看| 91av免费观看91av精品在线| 国产成人精选| 九色视频成人porny| 97色伦图片97综合影院| 好吊妞无缓冲视频观看| 精品综合免费视频观看| 一女三黑人理论片在线| 亚洲三级免费观看| 国产又大又粗又爽| 日韩一级二级三级| 成人亚洲性情网站www在线观看| 欧美国产乱视频| 黄色成人小视频| 蜜桃日韩视频| 好看的日韩av电影| 欧美性受xxxxxx黑人xyx性爽| 97se亚洲国产综合在线| 国产盗摄一区二区三区在线| 在线亚洲精品福利网址导航| 国产不卡一区| 国产精品成人一区二区三区吃奶| 精品国产伦一区二区三区观看说明 | 日本一本草久p| 欧美天堂亚洲电影院在线观看 | 亚洲福利在线看| 欧美天堂在线视频| 深夜精品寂寞黄网站在线观看| 成人国产电影在线观看| 91免费版黄色| 久久久久蜜桃| 九九九九九国产| 国产婷婷一区二区| 国产三级av片| 亚洲丁香久久久| 怡红院av在线| 91嫩草在线视频| 国内精品亚洲| 少妇人妻互换不带套| 成人精品视频网站| 91插插插插插插| 欧美人妇做爰xxxⅹ性高电影| 欧美香蕉爽爽人人爽| 7799精品视频天天看| 欧美三级欧美一级| 亚欧在线观看视频| 久久久久九九九九| 免费看一区二区三区| 中文字幕精品一区日韩| 日韩av电影天堂| 欧美日韩另类丝袜其他| 国内精品99| 福利视频999| 中文字幕精品一区二区精品绿巨人| 中文字幕亚洲精品在线| 亚洲国产成人久久| 成人三级小说| 精品国产一二| 亚洲欧美日本国产专区一区| 无套内谢大学处破女www小说| 欧美日韩人人澡狠狠躁视频| 日韩大片一区二区| 亚洲麻豆av| 日本精品一二三| 亚洲精品国产一区二区精华液 | 国产精品外国| aaaaa一级片| 色999日韩国产欧美一区二区| 九一国产在线| 国产精品美女久久久免费| 99久久久久国产精品| 久久久久九九九九| 精品在线网站观看| 国产99久久九九精品无码| 久久久噜噜噜久噜久久综合| 在线观看亚洲天堂| 尤物九九久久国产精品的特点| 精品176极品一区| gogogo免费高清日本写真| 国产成人日日夜夜| 日韩欧美三级视频| 亚洲性猛交xxxxwww| 天堂综合在线播放| 欧美中文字幕在线观看视频 | 老熟妇一区二区三区啪啪| 日本道精品一区二区三区 | 亚洲人免费视频| 成人激情视屏| 无码熟妇人妻av在线电影| 26uuu成人网一区二区三区| 在线观看国产一区二区三区| 久久91精品国产91久久久| 日韩av中文字幕一区| 亚洲xxxx2d动漫1| 樱桃国产成人精品视频| 欧美日韩国产亚洲沙发| 99久久国产免费看| 六月丁香在线视频| 日韩电影中文 亚洲精品乱码| 性欧美超级视频| 国产对白在线播放| 国产精品久久久久久久久久新婚| 精品成人av| 亚洲国产精品女人| 97久久精品人人做人人爽| 在线观看亚洲一区二区| 久久久女女女女999久久| av资源久久| 天天躁日日躁狠狠躁av麻豆男男 | 欧美xxxx做受欧美.88| 日韩黄色网络| 原创真实夫妻啪啪av|