Android篇 | 愛奇藝App啟動最佳化實踐分享
本文長度為2914字,預估閱讀時間8分鐘。
凡事預則立,不預則廢
關於App 的啟動最佳化, 大部分的技術同學第一反應是延遲執行任務,再透過做一些程式碼實現上的最佳化來提高程式碼的執行效率。愛奇藝App 早期的最佳化策略也是如此:將某些啟動階段不必要執行的任務延遲到首頁某個生命週期之後再執行,或是延遲固定時間之後再執行等等。
工欲善其事,必先利其器
有沒有一種工具能直接看到當前任務執行的瓶頸呢?做過Android效能最佳化的同學應該都會比較熟悉Systrace和 TraceView這兩款工具。但是這還不夠,我們需要一款更為直觀、便捷的工具。它能夠把啟動階段程式碼執行的先後順序、時間間隔、執行緒情況以及程式碼位置等資訊直觀的展示出來,讓我們能一眼看出某一階段的任務排程是否合理,然後再根據實際情況進一步做有針對性的最佳化。
經過充分的思考後,我們團隊給出瞭如下的最佳化方案:
· 任務化:將啟動階段的程式碼按照業務邏輯封裝成獨立任務,方便管理和排程。
· 併發:將啟動階段的任務儘量併發執行。
· 延遲:啟動階段只執行第一個頁面渲染展示的必要任務,延遲的任務將在第一個頁面渲染完成後再進行合理的排程觸發。
· 兜底:設計兜底機制,保證程式穩定執行。
· 監控與最佳化:建立常態化監控機制,監測任務變化情況,實現精準最佳化。
由於啟動階段的任務之間存在相互依賴關係,被依賴任務會出現非同步執行未完成而導致的崩潰問題。為了解決這一問題,一種基於依賴關係來動態排程任務執行的工作管理員——《TaskManger》被設計出來。
一、任務化
我們重新梳理了Application 階段的程式碼,並按照功能業務歸類整理,提煉出了多個任務模組。例如,我們將播放器部分的初始化工作封裝在PlayerInitTask類中。每個任務類都分為任務註冊與任務執行兩個部分,依據程式是否會啟動頁面展示,我們設定了不同的任務執行策略
二、併發與執行緒收斂
並且將啟動階段的任務都對接到了TM統一排程,避免其它執行緒搶佔CPU資源以及一些不必要的系統開銷問題,完成了啟動階段執行緒的收斂。透過採取這些措施啟動階段的執行緒數明顯降低,主執行緒因為子執行緒搶佔CPU資源而導致的執行效率過低的問題也得到了解決。
三、延遲
四、兜底
五、監控與最佳化
2)啟動資料監控
3)歷史版本啟動任務對比分析
總結
透過多個版本的迭代,完善了任務排程框架、啟動任務常態化監控機制、任務分析功能等等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945252/viewspace-2669116/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 愛奇藝 Android PLT hook 技術分享AndroidHook
- 愛奇藝iOS深度實踐 | SiriKit詳解應用篇iOS
- 愛奇藝Android客戶端啟動優化與分析Android客戶端優化
- 愛奇藝深度學習雲平臺的實踐及最佳化深度學習
- 愛奇藝混合雲內網DNS實踐內網DNS
- 愛奇藝個性化推薦排序實踐排序
- 愛奇藝的雲上資料治理實踐
- 愛奇藝逗芽表情搜尋分析與實踐
- 愛奇藝微服務監控的探索與實踐微服務
- 愛奇藝短視訊智慧標籤生成實踐
- 愛奇藝在服務網格方向的落地實踐
- iOS版愛奇藝取消自動續費教程 愛奇藝自動續費怎麼取消?iOS
- 愛奇藝內容中臺之Serverless應用與實踐Server
- 愛奇藝深度學習雲平臺的實踐及優化深度學習優化
- 愛奇藝在 Dubbo 生態下的微服務架構實踐微服務架構
- 愛奇藝大資料實時分析平臺的建設與實踐大資料
- 乾貨 | 愛奇藝全鏈路自動化監控平臺的探索與實踐
- 愛奇藝網路協程編寫高併發應用實踐
- 愛奇藝多模態人物識別挑戰賽報名啟動!
- 學術派 | 愛奇藝深度語義表示學習的探索與實踐
- 車澈的愛奇藝往事
- 愛奇藝元件化設計在會員業務的應用和實踐元件化
- 個性化海報在愛奇藝影片推薦場景中的實踐
- Android APP 出海實踐AndroidAPP
- 高德APP啟動耗時剖析與優化實踐(iOS篇)APP優化iOS
- 移動APP啟動慢解決實踐APP
- 愛奇藝財報:2023年愛奇藝總營收319億元 同比增長10%營收
- 大規模機器學習在愛奇藝視訊分析理解中的實踐機器學習
- i 技術會筆記 | Druid在愛奇藝的實踐和技術演進筆記UI
- 愛奇藝財報:2023年Q1愛奇藝營收83億元 同比增長15%營收
- 愛奇藝統一實時計算平臺建設
- 愛奇藝RND框架技術探索——架構與實現框架架構
- 【LiteApp系列】何為愛奇藝小程式?APP
- 愛奇藝小程式陪你嗨一夏
- Android APP 冷啟動流程AndroidAPP
- Android App啟動過程AndroidAPP
- 愛奇藝財報:2022年愛奇藝總營收為人民幣290億元 同比下滑5%營收
- 愛奇藝視訊生產Kubernetes叢集優化實踐:感知業務優先順序優化