知乎 救救你的 StartingWindow
我们经常说 iOS 整机体验要比 Android 好,这里有第三方软件的功劳(iOS 版本质量要高于 Android 版本质量),当然也归功于苹果对 iOS 的封闭系统的管控。应用想上 App Store,就得先过审核,不合规就给你打回来。
今天我们要说的,就是 iOS 和 Android 系统差异化的一个重要体现:StartingWindow,通俗点说,就是应用启动页。iOS 和 Android 都有 StartingWindow,但是表现却完全不一样。iOS 开发要求应用必须要有一个 StartingWindow,且必须是一张图片(iOS 开发可以说说是否支持定制 Layout),用户点击桌面图标启动应用,不会有任何延迟,会立即显示这个图片;Android 系统的 StartingWindow 虽然也是系统提供的,但是由于开放性,Android 允许开发者自己定制 StartingWindow、disable StartingWindow、透明化 StartingWindow。
StartingWindow 对用户体验的影响
由于 StartingWindow 对用户体验非常重要,但是应用开发者对 StartingWindow 的滥用,导致了用户启动应用的时候,会获得非常不好的体验,我举个例子你们就明白了:
- 使用系统默认的 StartingWindow :用户点了应用图标启动应用,马上弹出系统默认的 StartingWindow(就是做动画的那个 Window) ,等应用加载好第一帧之后,StartingWindow 消失,显示应用第一帧,无缝衔接,体验还不错,这也是通常大部分 Android 应用的场景;比如大部分 Android 系统的自带应用,即刻、汽车之家等
- 自己定制简单的 StartingWindow :用户点了应用图标启动应用,弹出应用自己定制的StartingWindow,等应用加载好第一帧之后,定制的 StartingWindow 消失,显示应用主界面,由于 StartingWindow 是自己定制的,启动的时候 Decode Bitmap 或者 Inflate 自定义 Layout 会有一定的耗时,但是总的来说与系统默认的差别不大,用户体验优;这样的应用包括淘宝、京东、微博、今日头条、美团等
- 把 StartingWindow 禁掉或者设置透明 :用户点了应用图标启动应用,由于 StartingWindow 被禁掉或者被设置透明,所以会出现点击图标后,除了图标黑一下之外没有任何响应,过个 1-N 秒(取决于应用第一帧的加载速度),直接显示应用主界面。这样的毒瘤应用包括:微信、微信读书、UC 浏览器、支付宝、工商银行、米家等。
大家可以安装一下我上面说的那些个应用自己体验一下,我是真的没法体会为何会有那么多应用采用第三种方式,偏偏很多用户只有一台手机,不认为是应用的问题,反而觉得是系统比较慢,然后各种投诉到系统这边,还是四五星的 Bug,真的是欲哭无泪。
我建议采用了第三种方式的应用的开发者,面壁思过一下,你们的产品经理是不合格的,你们作为开发没有主动提出优化这个也是失职的。不用怀疑微信也是他们的一员,只不过微信作为超级 App,在很多系统里面不杀他而已,不信你 adb shell am force-stop com.tencent.mm 一下试试。
知乎用户体验 - 数据展示
不过我今天不想说微信,我想说说知乎,因为我本人是知乎的重度用户,所以最近被知乎的体验搞得心情极差,再加上 N 多用户投诉启动慢,我必须来说两句了。
最近知乎安卓版的版本(5.17.2),虽然没有采用第三种方式,采用的是第一种方式,但是用户体验极差,具体说就是:点击桌面图标启动应用 -> 显示白屏(取决于你手机的性能,在1-5s 之间)-> 显示知乎是广告页 -> 显示知乎首页。我们之前说,白屏是大部分系统的默认 StartingWindow ,之所以会出现这样的现象是因为知乎那令人发指的应用启动速度。
我并不想从代码级别去分析他都干了啥,因为很多人对这个不感兴趣,感兴趣的可以自己抓 MethodTrace 看一下就可以了,这里我们简单从 Systrace 来看一眼就可以了,修复 Bug 的事情,让知乎的程序员去干吧。
从 StartingWindow(白屏) 出现到应用显示第一帧(SurfaceFlinger 视角,数据来自 Mix2s)
从 StartingWindow(白屏) 出现到应用显示第一帧(应用进程视角,数据来自 Mix2S)
Log 视角(看 am_activity_launch_time :2684)(数据来自 Pro7,Mix2s 是1552)
1 | 05-21 22:40:58.033 1252 3371 I am_create_activity: [0,128018471,73,com.zhihu.android/.app.ui.activity.LauncherActivity,android.intent.action.MAIN,NULL,NULL,270532608] |
这长达 1.9s 的时间,用户看到的都是白屏,更不用说后面还有 3s 的广告页,然后才到主界面,说好的用户体验呢。。。而且我用的机器是小米 Mix2S,高通845加持,那些低端机器就更不用说了,时间只会多不会少。
知乎用户体验 - 用户感受
用户看到的就是下面三个步骤(截图来自 Pro7)
首先点击桌面后,显示 StartingWindow(白屏页面)
2s 后,白屏页面跳转广告页面:
3S 后跳转知乎主界面
我建议知乎还是采用大多数 Android 应用目前采用的第二种方法,即定制简单的 StartingWindow,用户体验好不说,也能拉近 iOS 和 Android 版本的体验差距,比如下图(截取自知乎 iOS 版本)
写在最后
很大程度上来说,Android 系统的用户体验取决于第三方应用,各个厂商定制的系统能提升一部分,但是一旦进入了应用的界面,体验就完全取决于应用了。
StartingWindow 是一个很小的点,但毕竟是应用的入口,入口做的都不好的话,怎么能吸引用户每次都去访问你呢?知乎只是我举的一个小例子,毕竟还有非常恶劣的采用第三种方式的应用垫底,希望通过这个例子,各位应用开发者能体验到应用启动速度对用户的直接影响,俗话说,天下武功,唯快不破,不是没有道理的。应用优化的好,系统自然也会沾光,最终受益的还是用户。
最后还是挂一下那些非常影响用户体验的应用(采用了第三种方法),也希望读者可以反馈,我会持续更新,他们是
- 微信
- 微信读书
- UC 浏览器
- 支付宝
- 工商银行
- 米家
- ……
关于我 && 博客
下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!
- 博主个人介绍 :里面有个人的微信和微信群链接。
- 本博客内容导航 :个人博客内容的一个导航。
- 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
- Android性能优化知识星球 : 欢迎加入,多谢支持~
一个人可以走的更快 , 一群人可以走的更远