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

午夜免费看毛片| 色爱区成人综合网| 久久狠狠高潮亚洲精品| 最新精品国偷自产在线| 欧美日韩在线播放一区| 麻豆视频传媒入口| 无码国产伦一区二区三区视频 | 国产精品99久久免费| 亚洲精品国产第一综合99久久| 国产一区自拍视频| 中文字幕免费在线看| 国内精品福利| 中文字幕一区二区精品| 一区二区免费在线观看视频| 国产精品videossex撒尿| 一级中文字幕一区二区| 日韩在线导航| 无码国产精品高潮久久99| 黄色精品一二区| 68精品国产免费久久久久久婷婷| 日韩精品一区二区三区在线视频| 黄色欧美网站| 欧美一区二区三区不卡| 男人搞女人网站| 黑人极品ⅴideos精品欧美棵| 国产欧美日韩精品一区| 九九久久99| www.五月婷| 精久久久久久久久久久| 日韩美女免费观看| 日本在线视频免费| 欧美日韩国产高清| 久久精品中文字幕电影| 90岁老太婆乱淫| 国产女人18毛片水真多18精品| 91精品在线一区二区| 日本黄色三级大片| 91破解版在线观看| 伊人一区二区三区| 国产福利片一区二区| 高清日韩av电影| 国产色婷婷亚洲99精品小说| 久草热久草热线频97精品| 亚洲精品无码久久久| 激情综合网激情| 国产欧美精品一区二区| 中文字幕在线播放日韩| 日韩**一区毛片| 国产精品v片在线观看不卡| 亚洲另类欧美日韩| 噜噜噜91成人网| 日韩免费av一区二区| 五月天综合激情网| 免费永久网站黄欧美| 51久久精品夜色国产麻豆| 天天操中文字幕| 欧美日韩精品专区| 久久久久久久久久久久av| 91久久国产综合| 国产韩日影视精品| xxxx欧美18另类的高清| 女教师淫辱の教室蜜臀av软件| 精品国产视频| 中文字幕国产日韩| 免费看一级黄色| 91精品一区二区三区综合在线爱| 日韩亚洲国产中文字幕| 性少妇xx生活| 亚洲在线久久| 欧美精品videosex极品1| 麻豆一区二区三区精品视频| 国内自拍一区| 日本高清+成人网在线观看| jizz国产在线观看| 捆绑紧缚一区二区三区视频| 成人欧美一区二区三区在线| 国产情侣一区二区| 成人av免费观看| 欧美黑人3p| 午夜伦全在线观看| 一区二区三区 在线观看视频| 丰满的少妇愉情hd高清果冻传媒| 电影在线观看一区| 欧美综合色免费| 深夜福利网站在线观看| 看全色黄大色大片免费久久久| 亚洲欧洲美洲在线综合| 波多野结衣喷潮| 欧美亚洲不卡| 国产精品成人av性教育| 国产精品嫩草影院桃色| 成人综合在线网站| 水蜜桃亚洲精品| 麻豆av在线导航| 亚洲电影在线免费观看| 波多野结衣作品集| 欧美.com| 一道本无吗dⅴd在线播放一区| 国语对白在线播放| 国产毛片久久| 91久久精品国产91久久| 偷拍25位美女撒尿视频在线观看| 国产尤物久久久| 日韩在线观看视频免费| 国产无套粉嫩白浆内谢| 奇米影视一区二区三区| 国产精品一区二区三区不卡 | 亚洲精品国产成人| 国产精品久久免费观看| 好吊日精品视频| 国产精品小说在线| 四虎在线观看| 亚洲在线一区二区三区| 国产又大又黄又猛| 欧美综合精品| 欧美精品久久久久久久久久| 中文字幕+乱码+中文乱码www| www.欧美日韩国产在线| 欧美aaa在线观看| 亚洲成人短视频| 亚洲高清福利视频| 顶臀精品视频www| 日韩vs国产vs欧美| 久久久免费看| av免费不卡国产观看| 日韩写真欧美这视频| 肉色超薄丝袜脚交69xx图片| 久久精品亚洲一区二区| 狠狠色伊人亚洲综合网站色| 香蕉成人app免费看片| 欧美日韩视频一区二区| 波多野结衣片子| 国产欧美日韩亚洲一区二区三区| 丁香婷婷久久久综合精品国产| 第九色区av在线| 日本久久一区二区三区| 久久久久国产精品区片区无码| 欧美激情成人在线| 亚洲伊人久久综合| 黄色免费网站在线观看| 欧美日韩免费高清一区色橹橹| 在线观看日本中文字幕| 午夜在线精品偷拍| 久久久综合香蕉尹人综合网| 波多野结衣中文在线| 日韩精品最新网址| 国产性生活网站| 丁香激情综合国产| 亚洲色成人www永久在线观看| 97精品久久| 久久久久久久久久久亚洲| 亚洲产国偷v产偷v自拍涩爱| 一区二区三区美女| 中文字幕第六页| 亚洲香蕉网站| 精品国产乱码久久久久软件| av在线资源| 亚洲乱码国产乱码精品精| 亚洲GV成人无码久久精品| 久久这里只精品最新地址| www.国产区| 精品国产精品| 成人av番号网| 欧美韩日亚洲| 日韩av中文字幕在线播放| 手机看片久久久| 国产精品人成在线观看免费 | 中文字幕欧美视频在线| 这里只有精品9| 综合久久久久久| 人妖粗暴刺激videos呻吟| 亚洲一区不卡| 亚洲一一在线| 高清日韩中文字幕| 日本免费一区二区三区视频观看| 国产高清美女一级毛片久久| 欧美日韩黄色一区二区| 久久精品99国产精| 2021久久国产精品不只是精品| 999精品网站| 国产高清一区二区| 精品蜜桃一区二区三区| 欧美日韩精品免费观看视欧美高清免费大片| 一本一道久久a久久精品逆3p | 成人晚上爱看视频| 无码人妻丰满熟妇区毛片| 嫩草一区二区三区| 亚洲tv在线观看| 小h片在线观看| 久久激情五月丁香伊人| 色窝窝无码一区二区三区| 欧美中文字幕一区二区三区| 免费在线观看日韩| 国产午夜精品一区二区三区四区| 四虎成人在线播放| 久久精品三级| 日韩视频在线视频| 色综合天天综合网中文字幕| 国产精品青青草| 欧美在线一级| 欧美在线视频观看| 91高清在线观看视频| 亚洲视频在线视频| 亚洲av无码片一区二区三区| 在线观看日产精品| 国产福利久久久| 国产精品国产三级国产aⅴ入口| 中国特级黄色大片| 精品午夜久久福利影院| 欧美成人黑人猛交| 好看的日韩av电影| 在线免费观看一区二区三区| 亚洲v天堂v手机在线| 91免费看网站| 久久久精品一区二区毛片免费看| 97精品免费视频| 18av在线视频| 日韩在线小视频| 国产私人尤物无码不卡| 日韩av在线免费| 亚洲精品网站在线| 日韩一区二区不卡| 91片黄在线观看喷潮| 色综合久久88色综合天天6| 中文在线观看免费网站| 亚洲人成人一区二区在线观看 | 精品国产不卡| 欧美精品免费观看二区| 美女av一区| 国产精品我不卡| 亚洲性视频在线| 国产日韩欧美日韩大片| 精品久久毛片| 国产美女久久久| 久久精品 人人爱| 国产精品久久久久久久久借妻 | 亚洲激情黄色| www.国产在线视频| 国产综合精品| 美女黄色免费看| 亚洲国产99| 热99这里只有精品| 亚洲视频1区| 欧美日韩亚洲一| 欧美中文日韩| 中文字幕在线观看第三页| 日韩电影在线免费观看| av在线无限看| 狠狠色综合播放一区二区| 性久久久久久久久久久久久久| 精品一区二区三区视频| 女人高潮一级片| 国产乱人伦偷精品视频免下载| 中文字幕一区久久| 国产一区二区福利视频| 又大又长粗又爽又黄少妇视频| 国产精品99久| 中国极品少妇xxxx| 91丨porny丨户外露出| 亚洲熟妇一区二区三区| 国产欧美精品国产国产专区| 日韩免费成人av| 亚洲视频免费在线观看| 国产suv一区二区三区| 亚洲一线二线三线视频| 国产乡下妇女做爰视频| 欧美性生活大片免费观看网址| 日韩乱码一区二区三区| 在线成人av网站| 后入内射欧美99二区视频| 亚洲国产精品成人精品| 撸视在线观看免费视频| 色偷偷888欧美精品久久久| av在线下载| 97婷婷涩涩精品一区| 日韩国产网站| 91视频免费在线| 精品女人视频| 亚洲欧洲日本国产| 激情综合网址| 亚洲少妇第一页| 国产成人亚洲精品青草天美| 亚洲一区二区三区无码久久| 国产三级欧美三级| 欧美久久久久久久久久久久| 午夜婷婷国产麻豆精品| 亚洲色成人www永久网站| 欧美一卡二卡在线观看| 日韩福利一区二区| 久热99视频在线观看| 在线天堂中文资源最新版| 国产日韩欧美91| 伊人春色之综合网| 久久久久久久久网| 久久综合亚州| 久久久久久国产精品日本| 久久婷婷成人综合色| 91视频综合网| 欧美主播一区二区三区美女| 亚洲国产一二三区| 中文字幕日本精品| 色是在线视频| yy111111少妇影院日韩夜片| 欧美手机在线| 欧美一区二区三区爽大粗免费| 国内一区二区视频| 蜜桃传媒一区二区亚洲av| 亚洲精品伦理在线| 中文字幕 视频一区| 亚洲精品丝袜日韩| jizz一区二区三区| 91青草视频久久| 欧美另类69xxxxx| 69堂免费视频| 成人午夜视频在线| 日韩国产第一页| 在线亚洲精品福利网址导航| 欧美在线 | 亚洲| 另类视频在线观看| 国产一区影院| 日韩亚洲视频在线| 亚洲在线网站| 手机在线成人av| 亚洲一区二三区| 精品国产无码一区二区| 中文字幕亚洲国产| 性欧美超级视频| 欧美精品尤物在线| 国产精品一区毛片| 黄色免费看视频| 亚洲国产精品一区二区尤物区| 国产毛片毛片毛片毛片毛片| 中文字幕欧美专区| 成人黄色毛片| 亚洲精品在线视频观看| 日韩成人一区二区三区在线观看| 玖玖爱在线观看| 欧美日韩亚洲一区二| 五月天久久久久久| 性日韩欧美在线视频| 国产欧美自拍一区| aa在线观看视频| 337p粉嫩大胆噜噜噜噜噜91av | 大胸美女被爆操| 欧美在线啊v一区| www视频在线观看免费| 国产精品久久激情| 欧美精品系列| 国内外成人免费在线视频| 中文字幕五月欧美| 国产精品久久久久久久一区二区| 日韩在线免费高清视频| 五月天色综合| 国产911在线观看| 成人av在线播放网址| 一级片免费网址| 亚洲欧洲国产伦综合| jizz免费一区二区三区| 亚洲三区在线| 国产精品99精品久久免费| 久久精品国产亚洲av高清色欲 | 色综合欧美在线| 东热在线免费视频| 91在线精品播放| 狠狠爱成人网| ass精品国模裸体欣赏pics| 91久久精品国产91性色tv| 日本福利专区在线观看| 亚洲a在线观看| 99精品视频免费| 精品亚洲aⅴ无码一区二区三区| 欧美理论电影在线| 国产福利在线免费观看| 久久手机视频| 麻豆91精品91久久久的内涵| 中文字幕av免费在线观看| 亚洲精品福利在线观看| 国产精品高潮久久| 国产天堂视频在线观看| wwwwxxxxx欧美| 国产精品无码免费播放| 777精品视频| 久久裸体网站| 美女久久久久久久久| 色狠狠一区二区| 最新黄网在线观看| 久久精品中文字幕一区二区三区 | 疯狂做受xxxx欧美肥白少妇| 国产大片在线免费观看| 99免费在线观看视频| 久久婷婷一区| 五月天婷婷色综合| 国产视频综合在线| 日韩免费一级| 日韩欧美在线免费观看视频| 亚洲美腿欧美偷拍| 欧美偷拍视频| 成人在线观看av| 蜜臀91精品一区二区三区| 日本熟女一区二区|