# DataBinder
## 本質
將布局中的界面組件直接綁定到數據源,提供雙向綁定,及高級綁定適配能力
# ViewBinder
## 原理
分析入口:從`databinding-compiler`進行分析,因為在編譯環節會被調用。

* Step1:layout文件(xml資源文件) -> 解析 -> 元素緩存 。
* Step2:元素緩存 -> 解析 -> layout文件(中間件) 。
* Step3:layout文件(中間件) -> 解析 -> ViewBinding類 。
## DataBinding VS ViewBinder
視圖綁定和數據綁定均會生成可用于直接引用視圖的綁定類。但是,視圖綁定旨在處理更簡單的用例,與數據綁定相比,具有以下`優勢`:
* **更快的編譯速度**:視圖綁定不需要處理注釋,因此編譯時間更短。
* **易于使用**:視圖綁定不需要特別標記的 XML 布局文件,因此在應用中采用速度更快。在模塊中啟用視圖綁定后,它會自動應用于該模塊的所有布局。
反過來,與數據綁定相比,視圖綁定也具有以下`限制`:
* 視圖綁定不支持布局變量或布局表達式,因此不能用于直接在 XML 布局文件中聲明動態界面內容。
* 視圖綁定不支持雙向數據綁定。
`推薦`:在某些情況下,最好在項目中同時使用視圖綁定和數據綁定。可以在需要高級功能的布局中使用數據綁定,而在不需要高級功能的布局中使用視圖綁定。
## 參考資料
[“終于懂了“系列:Jetpack AAC完整解析(五)DataBinding 重新認知!](https://juejin.cn/post/6923859213403979789)
- Android
- 四大組件
- Activity
- Fragment
- Service
- 序列化
- Handler
- Hander介紹
- MessageQueue詳細
- 啟動流程
- 系統啟動流程
- 應用啟動流程
- Activity啟動流程
- View
- view繪制
- view事件傳遞
- choreographer
- LayoutInflater
- UI渲染概念
- Binder
- Binder原理
- Binder最大數據
- Binder小結
- Android組件
- ListView原理
- RecyclerView原理
- SharePreferences
- AsyncTask
- Sqlite
- SQLCipher加密
- 遷移與修復
- Sqlite內核
- Sqlite優化v2
- sqlite索引
- sqlite之wal
- sqlite之鎖機制
- 網絡
- 基礎
- TCP
- HTTP
- HTTP1.1
- HTTP2.0
- HTTPS
- HTTP3.0
- HTTP進化圖
- HTTP小結
- 實踐
- 網絡優化
- Json
- ProtoBuffer
- 斷點續傳
- 性能
- 卡頓
- 卡頓監控
- ANR
- ANR監控
- 內存
- 內存問題與優化
- 圖片內存優化
- 線下內存監控
- 線上內存監控
- 啟動優化
- 死鎖監控
- 崩潰監控
- 包體積優化
- UI渲染優化
- UI常規優化
- I/O監控
- 電量監控
- 第三方框架
- 網絡框架
- Volley
- Okhttp
- 網絡框架n問
- OkHttp原理N問
- 設計模式
- EventBus
- Rxjava
- 圖片
- ImageWoker
- Gilde的優化
- APT
- 依賴注入
- APT
- ARouter
- ButterKnife
- MMKV
- Jetpack
- 協程
- MVI
- Startup
- DataBinder
- 黑科技
- hook
- 運行期Java-hook技術
- 編譯期hook
- ASM
- Transform增量編譯
- 運行期Native-hook技術
- 熱修復
- 插件化
- AAB
- Shadow
- 虛擬機
- 其他
- UI自動化
- JavaParser
- Android Line
- 編譯
- 疑難雜癥
- Android11滑動異常
- 方案
- 工業化
- 模塊化
- 隱私合規
- 動態化
- 項目管理
- 業務啟動優化
- 業務架構設計
- 性能優化case
- 性能優化-排查思路
- 性能優化-現有方案
- 登錄
- 搜索
- C++
- NDK入門
- 跨平臺
- H5
- Flutter
- Flutter 性能優化
- 數據跨平臺