只有少数的应用能得到 “常驻主人手机后台” 这一殊荣,音乐即是其中一类。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 开发者手册“