思路:將網(wǎng)絡(luò)亦歉、本地存儲等封裝成基礎(chǔ)組件,將用戶奋救、活動等封裝成業(yè)務(wù)組件.然后將這些組件使用cocoapods 私有庫集成,在主項目中pod install進行使用.
組件間通訊:使用roter或者抽出來一個專門用來通信的類.
- 圖片緩存
內(nèi)存緩存 磁盤緩存 網(wǎng)絡(luò)下載
圖片解碼/圖片壓縮.解壓縮
圖片是通過什么方式進行讀寫?以及它的過程
以圖片的url的單向hash作為key
先去內(nèi)存,然后磁盤查找,然后網(wǎng)絡(luò)下載.
內(nèi)存的設(shè)計:
存儲的Size: 10kb的最多能存儲50個 100kb的存20個
淘汰策略: LRU算法:最近最久未使用算法,對比時間
磁盤的設(shè)計:
存儲方式:
大小限制:
淘汰策略: 存儲時間距離今天7天
網(wǎng)絡(luò)下載:
圖片下載的最大并發(fā)量
請求優(yōu)先級
請求超時策略 - 閱讀時長統(tǒng)計框架
記錄器:頁面式的記錄場景、流式頁面的記錄場景状植、自定義式
記錄管理者:記錄緩存葛超、磁盤緩存官扣、上傳器
延時上傳:前后臺切換、從無網(wǎng)到有網(wǎng)芙委、輕量接口捎帶 - 復(fù)雜頁面架構(gòu)
網(wǎng)絡(luò)層逞敷、業(yè)務(wù)層、數(shù)據(jù)層
facebook開源的asyncDisplayKit預(yù)排版 - rn數(shù)據(jù)流思想:視圖組合可以看成一顆多叉樹,互動的頁面數(shù)據(jù)傳遞到根節(jié)點,然后又根節(jié)點往下分發(fā)詢問是否要更新視圖.
-
客戶端整體架構(gòu)
openurl 依賴注入(中間層)