只有少數的應用能獲得 “常駐主人手機後臺” 這一殊榮,音樂便是其中一類。
不同於其他手機記憶體裡的常客,音樂類應用更多的時候是在手機熄屏的狀態下工作著。享受音樂,最理想的狀態便是沉浸而不易中斷,開發者們也在為此不斷努力。
![用新技術 “派生” 的旋律把耳朵叫醒](https://i.iter01.com/images/8ff669751769937814c10b87777f37c7de8af87abdc92145d3dcd27d7f8d4e96.jpg)
Android 9 釋出後,Shawn 發現了更多的可能。
雙軌並行 效率至上
Android 9 到來之前,最令 Shawn 頭疼的一項工作便是為當時方興未艾的各種劉海屏手機進行單獨適配。
雖然音樂應用並不是主要 “靠臉吃飯”,但使用者開啟應用留下的第一印象確實十分重要,如果介面不夠協調有瑕疵,很可能會產生 “勸退” 效果。
![用新技術 “派生” 的旋律把耳朵叫醒](https://i.iter01.com/images/7bd1f0293362212c194d8cf137793c84c82e62df4cf0d095ccec29233fd0d82c.jpg)
![用新技術 “派生” 的旋律把耳朵叫醒](https://i.iter01.com/images/51f2ae71a37897ab94f94c5630c1edfb617a09f1ed40f97192790bcd79437605.jpg)
為此,Shawn 還撰寫了文件在騰訊音樂技術團隊的公眾號與大家分享,希望更多的開發者能夠規範地使用官方 API 提高工作效率。
目前,在國內還有很多手機沒有升級到 Android 9 版本系統的情況下,QQ 音樂的 Android 團隊在使用自己整合的 Android 8 各廠商劉海屏判斷邏輯的同時,加上了 Android 9 官方的判斷邏輯,這樣就能保證靈活地為國內的 Android 使用者服務。
滿足個性化 工作 “不打擾”
如果說對劉海屏適配 API 的整合只是 Android 9 時代為開發者提供的一項基本保證,那麼新版本中的通知欄優化則為開發者提供了更多提升使用者體驗的空間。
人們在使用音樂應用時,很多時候並不是經常在主介面進行操作,而是會在通知欄進行切歌等行為,這時候頻繁與使用者打交道的應用通知欄樣式成了“顏值擔當”。
![用新技術 “派生” 的旋律把耳朵叫醒](https://i.iter01.com/images/02f8a88261d47803a05ea4aaebce7e27f1e2293f839961d6549db43b01447d83.jpg)
而通知欄的 “面子” 變了,不容易看見的通知邏輯其實也在新版本中悄然發生了改變。
![用新技術 “派生” 的旋律把耳朵叫醒](https://i.iter01.com/images/3d87d4a021d42f3d1f4051778808dd87a6b61fea525c44d301c947e229851e46.jpg)
QQ 音樂的 Android 開發團隊很早就使用了 Android 8 的 Notification Channel 功能,並在適配 Android 9 期間計劃逐步將應用內的通知根據重要性進行了不同等級的區分,同時建立不同的通知渠道,比如最重要的是聽歌的通知,其次是類似使用者私信的通知,再次是一些活動的相關推送等資訊,這些不同等級的內容都有獨立的通知渠道,使用者可以自定義地去設定是否播放聲音和震動,而不是像過去一樣簡單粗暴地關掉所有通知,或者放任大量通知干擾自己。
做後臺的小透明, 提供不間斷的沉浸體驗
通知頻率不當會打擾到使用者,但對於沉浸在音樂世界中的使用者來說,更嚴重的打擾是突然中斷——程式被系統殺死。
Android 版本的 QQ 音樂應用由兩個程式組成,即播放程式和主程式,播放程式的佔用記憶體要儘可能的小來降低被系統殺死的概率,所以很多業務邏輯都是在主程式完成,但是在某些後臺管理策略激進的第三方 Android 系統中,應用的所有程式可能會被同時殺死。
![用新技術 “派生” 的旋律把耳朵叫醒](https://i.iter01.com/images/b8112971e01caaadf820a3199959726e8077c09bf07088f149b71fe73cbd51b0.jpg)
所以在適配 Android 9 的後臺執行策略期間,QQ 音樂團隊內部開了多次技術會議,提早將雙程式的優化提上日程,投入更多精力對目前的雙程式機制進行優化,在滿足 Android 9 後臺執行策略的基礎上進一步降低主程式駐後臺的時間,從而實現更少的整體記憶體佔用,極力減少音樂播放時戛然而止的糟糕情況發生。
優化打磨產品,離不開趁手的工具鏈。
![用新技術 “派生” 的旋律把耳朵叫醒](https://i.iter01.com/images/26eedbc9f6edd409caf3a347874cae420666deac4c2bc0f0fefb87fe181c7d05.jpg)
除了使用 Android Studio 之外,QQ 音樂新增的功能特性基本都使用的是 Kotlin 語言,Shawn 認為,從零開始開發一個模組的時候,使用 Kotlin 可以節省 25% 左右的開發時間,同時還能大大的減少空指標等異常。
工程師們用自己的智慧,把音樂應用調教成一位外冷內熱的演奏家,它彬彬有禮地工作著,不動聲色地奏響一曲又一曲或波瀾壯闊或低吟淺唱的美妙音樂。
一行行程式碼隨著程式設計的旋律在詠唱,正等待著有心的耳朵去聆聽。
點選這裡下載 “Android 9 Pie 開發者手冊“
![用新技術 “派生” 的旋律把耳朵叫醒](https://i.iter01.com/images/087e991932e96a1792a1f20e99978d1f75af4624da7634f31db9fd6753a3aa9b.jpg)