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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 高德APP啟動耗時剖析與優化實踐(iOS篇)APP優化iOS
- 移動APP啟動慢解決實踐APP
- 愛奇藝iOS深度實踐 | SiriKit詳解應用篇iOS
- 愛奇藝深度學習雲平臺的實踐及最佳化深度學習
- 愛奇藝 Android PLT hook 技術分享AndroidHook
- 愛奇藝Android客戶端啟動優化與分析Android客戶端優化
- Android APP 出海實踐AndroidAPP
- 淺談App的啟動最佳化APP
- 一觸即發 App 啟動優化最佳實踐APP優化
- Android App啟動過程AndroidAPP
- Android APP 冷啟動流程AndroidAPP
- android app啟動流程解析AndroidAPP
- Laravel 之 Application---實踐篇LaravelAPP
- 愛奇藝混合雲內網DNS實踐內網DNS
- android APP開機自動啟動AndroidAPP
- Android元件化實踐專案分享Android元件化
- 14個Flink SQL效能最佳化實踐分享SQL
- 愛奇藝個性化推薦排序實踐排序
- 愛奇藝的雲上資料治理實踐
- iOS App冷啟動治理:來自美團外賣的實踐iOSAPP
- 7min到40s:SpringBoot啟動最佳化實踐Spring Boot
- 案例分享,Appium+Python實現APP啟動頁跳轉到首頁APPPython
- 移動端適配-實踐篇
- Android App應用啟動流程(一)AndroidAPP
- [譯]Android Application 啟動流程分析AndroidAPP
- android app如何做到快速啟動AndroidAPP
- 愛奇藝逗芽表情搜尋分析與實踐
- 愛奇藝微服務監控的探索與實踐微服務
- 愛奇藝短視訊智慧標籤生成實踐
- Android元件化開發實踐和案例分享Android元件化
- Android 實現開機自啟APPAndroidAPP
- 雲音樂服務端應用啟動時間下降40%實踐分享服務端
- DCOS實踐分享(3):基於Mesos 和 Docker企業級移動應用實踐分享Docker
- android app 啟動第一個頁面AndroidAPP
- Android效能最佳化之加快應用啟動速度Android
- 愛奇藝在服務網格方向的落地實踐
- ArchSummit分享 | 高德地圖App架構演化與實踐MIT地圖APP架構
- WKWebView實踐分享WebView