大家可以参考淘宝的全链路优化的案例:历时1年,上百万行代码!首次揭秘手淘全链路性能优化(上)
启动网络链路优化问题和优化点优化预加载
Activity 打开之前就预加载数据,在 Activity 的 UI 布局初始化完成后显示预加载的数据,大大缩短启动时间。 可以参考 :github.com/luckybilly/…
保活
保活,是各个应用开发者的噩梦,也是 Android 厂商关注和打击的重点。不过从启动的角度来看,如果应用进程不被杀,那么启动自然就快了,所以保活对应用启动速度也是有极大的帮助。
当然这里说的保活,并不是建议大家用各种黑科技、相互唤醒、通知轰炸这种保活手段,而是提供真正的功能,能让用户觉得你在后台是合理的、可以接收的。比如在后台的时候,资源能释放的都释放掉,不要一直在后台做耗电操作,该停的服务停掉,该关的动画关掉。
当然对于应用开发者来说,上面说的都太多理想化了,而且目前的手机厂商也会很暴力,应用到了后台就会处理掉,不过这毕竟是一个方向,Google 也在规范应用后台行为和规范厂商处理应用这两方面都在做努力,Android 系统的生态,还是需要应用开发者和 Android 厂商一起取改善。
当然保活还有一条路就是走跟厂商的合作,优化后台内存、去掉重复拉起、去掉流氓逻辑、积极响应低内存警告,做好这些话后可以跟系统厂商联系,谈放到查杀白名单和自启动白名单的可行性
业务梳理
这里涉及到具体的业务,每个 App 都不一样ad预加载开机启动脚本,但是所要做的事情都是一样的,下面是邵文在高手课里面提到的:
可以把具体的业务分为下面四个维度(此处图文来自juejin.im/post/5c21ea…)
然后按需进行加载优化
业务优化优化业务中的代码效率,抓大放小,先从比较明显的瓶颈处下手,逐步进行优化历史债务要偿还,历史的代码要重构,不能一直拖着
具体的业务会有具体的优化场景,大家可以参考这篇文章中的优化流程和优化项…
数据库及IO操作都移到工作线程,并且设置线程优先级为THREAD_PRIORITY_BACKGROUND,这样工作线程最多能获取到10%的时间片,优先保证主线程执行流程梳理,延后执行;实际上,这一步对项目启动加速最有效果。通过流程梳理发现部分流程调用时机偏失等, 例如
更新等操作无需在首屏尚未展示就调用,造成资源竞争调用了IOS为了规避审核而做的开关,造成网络请求密集自有统计在Application的调用里创建数量固定为5的线程池,造成资源竞争修改广告闪屏逻辑为下次生效
去掉用无但被执行的老代码去掉开发阶段使用但线上被执行的代码去掉重复逻辑执行代码去掉调用三方SDK里或者Demo里的多余代码信息缓存,常用信息只在第一次获取,之后从缓存中取项目是多进程架构,只在主进程执行Application的onCreate()
减少Activity的跳转层次
StartingWindow 会在用户点击 App 后立即创建并显示(前提是 App 没有禁止 StartingWindow),在 AppWindow 创建好之后,StartingWindow 消失,AppWindow 显示
默认 App 的启动窗口流程
| 1 2 | ``` StartingWindow(SystemWindow) ->MainActivity(AppWindow)
| ------------ | ------------------------------------------------------------------ |
### 大部分三方 App 启动流程[](https://androidperformance.com/2019/11/18/Android-App-Lunch-Optimize/#%E5%A4%A7%E9%83%A8%E5%88%86%E4%B8%89%E6%96%B9-App-%E5%90%AF%E5%8A%A8%E6%B5%81%E7%A8%8B)
来源:【九爱网址导航www.fuzhukm.com】
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!