只有少數的應用能得到 「常駐主人手機後臺」 這一殊榮,音樂即是其中一類。android
不一樣於其餘手機內存裏的常客,音樂類應用更多的時候是在手機熄屏的狀態下工做着。享受音樂,最理想的狀態即是沉浸而不易中斷,開發者們也在爲此不斷努力。web
Android 9 發佈後,Shawn 發現了更多的可能。編程
Android 9 到來以前,最令 Shawn 頭疼的一項工做即是爲當時方興未艾的各類劉海屏手機進行單獨適配。工具
雖然音樂應用並非主要 「靠臉吃飯」,但用戶打開應用留下的第一印象確實十分重要,若是界面不夠協調有瑕疵,極可能會產生 「勸退」 效果。佈局
爲此,Shawn 還撰寫了文檔在騰訊音樂技術團隊的公衆號與你們分享,但願更多的開發者可以規範地使用官方 API 提升工做效率。優化
目前,在國內還有不少手機沒有升級到 Android 9 版本系統的狀況下,QQ 音樂的 Android 團隊在使用本身整合的 Android 8 各廠商劉海屏判斷邏輯的同時,加上了 Android 9 官方的判斷邏輯,這樣就能保證靈活地爲國內的 Android 用戶服務。google
若是說對劉海屏適配 API 的整合只是 Android 9 時代爲開發者提供的一項基本保證,那麼新版本中的通知欄優化則爲開發者提供了更多提高用戶體驗的空間。設計
人們在使用音樂應用時,不少時候並非常常在主界面進行操做,而是會在通知欄進行切歌等行爲,這時候頻繁與用戶打交道的應用通知欄樣式成了「顏值擔當」。3d
而通知欄的 「面子」 變了,不容易看見的通知邏輯其實也在新版本中悄然發生了改變。指針
QQ 音樂的 Android 開發團隊很早就使用了 Android 8 的 Notification Channel 功能,並在適配 Android 9 期間計劃逐步將應用內的通知根據重要性進行了不一樣等級的區分,同時創建不一樣的通知渠道,好比最重要的是聽歌的通知,其次是相似用戶私信的通知,再次是一些活動的相關推送等信息,這些不一樣等級的內容都有獨立的通知渠道,用戶能夠自定義地去設置是否播放聲音和震動,而不是像過去同樣簡單粗暴地關掉全部通知,或者聽任大量通知干擾本身。
通知頻率不當會打擾到用戶,但對於沉浸在音樂世界中的用戶來講,更嚴重的打擾是忽然中斷——進程被系統殺死。
Android 版本的 QQ 音樂應用由兩個進程組成,即播放進程和主進程,播放進程的佔用內存要儘量的小來下降被系統殺死的機率,因此不少業務邏輯都是在主進程完成,可是在某些後臺管理策略激進的第三方 Android 系統中,應用的全部進程可能會被同時殺死。
因此在適配 Android 9 的後臺執行策略期間,QQ 音樂團隊內部開了屢次技術會議,提前將雙進程的優化提上日程,投入更多精力對目前的雙進程機制進行優化,在知足 Android 9 後臺執行策略的基礎上進一步下降主進程駐後臺的時間,從而實現更少的總體內存佔用,極力減小音樂播放時戛然而止的糟糕狀況發生。
優化打磨產品,離不開趁手的工具鏈。
除了使用 Android Studio 以外,QQ 音樂新增的功能特性基本都使用的是 Kotlin 語言,Shawn 認爲,從零開始開發一個模塊的時候,使用 Kotlin 能夠節省 25% 左右的開發時間,同時還能大大的減小空指針等異常。
工程師們用本身的智慧,把音樂應用調教成一位外冷內熱的演奏家,它彬彬有禮地工做着,不動聲色地奏響一曲又一曲或波瀾壯闊或低吟淺唱的美妙音樂。
一行行代碼隨着編程的旋律在詠唱,正等待着有心的耳朵去聆聽。
點擊這裏下載 「Android 9 Pie 開發者手冊「