巧用友盟+U-APM 实现移动端性能优化—启动速度

简介: 移动端性能对用户体验、留存有着至关重要的影响,作为开发者是不是被这样吐槽过,“这个 APP 怎么这么大?”、“怎么一直在 APP 封面图转悠,点不进去”、“进入详情效果有些卡”、“用 4G 使用你们的 APP,我的流量有点不够啊”等等,这些问题都直观反映出,一个体验良好的应用,只有功能健全还不够,以下是我在性能优化上总结的几点:

•  启动速度优化

•  流畅度优化

•  资源优化

•  内存优化

•  APK 体积优化

今天先聊聊,启动速度的那些事

应用启动流程

冷启动

从点击应用图标到UI界面完全显示且用户可操作的全部过程。

特点:耗时最多,衡量标准

启动流程:Click Event -> IPC -> Process.start -> ActivityThread -> bindApplication -> LifeCycle -> ViewRootImpl

热启动

因为会从已有的应用进程启动,所以不会再创建和初始化Application,只会重新创建并初始化Activity。

特点:耗时较少

启动流程:LifeCycle -> ViewRootImpl

因此判断应用启动速度的的标准是冷启动的速度,即杀掉应用后重新启动的速度,此项主要是和你的竞品对比。

不应在 Application 以及 Activity 的生命周期回调中做任何费时操作,具体指标大概是你在 onCreate,onResume,onStart 等回调中所花费的总时间最好不要超过 400ms,否则用户在桌面点击你的应用图标后,将感觉到明显的卡顿。

冷启动分析及优化方向

冷启动涉及的相关任务

冷启动之前

1. 首先,会启动 App

2. 然后,加载空白 Window

3. 最后,创建进程

需要注意的是,这些都是系统的行为,一般情况下我们是无法直接干预的。

随后任务

1. 首先,创建 Application

2. 启动主线程

3. 创建 MainActivity

4. 加载布局

5. 布置屏幕

6. 首帧绘制

通常到了界面首帧绘制完成后,我们就可以认为启动已经结束了。

下面是官方文档中的启动过程流程图,显示系统进程和应用进程之间如何交接工作。实际上对启动流程的简要概括。

1.jpg

优化方向

我们的优化方向就是 Application 和 Activity 的生命周期这个阶段,启动中的系统任务我们无法干预,能干预的就是在创建应用和创建 Activity 的过程中可能会出现的性能问题。这一过程具体就是:

•  Application 的 attachBaseContext

•  Application 的 onCreate

•  activity 的 onCreate

•  activity 的 onStart

•  activity 的 onResume

activity 的 onResume 方法完成后才开始首帧的绘制。所以这些方法中的耗时操作我们是要极力避免的。 并且,通常情况下,一个应用的主页的数据是需要进行网络请求的,那么用户启动应用是希望快速进入主页以及看到主页数据,这也是我们计算启动结束时间的一个依据。

U-APM 在启动优化上的应用

以前使用友盟统计来分析 App 日活、埋点等数据,发现友盟推出的 U-APM ,赶紧来尝尝鲜。

U-APM 是友盟+推出的 App 稳定性监控、性能监控和云真机测试平台。通过轻量级的集成接入即可拥有实时、可靠、全面的应用崩溃、ANR、自定义异常等捕获能力,及卡顿、启动分析等性能能力,支持多场景、多通道智能告警监控,帮助开发者高效还原异常、卡顿用户的访问路径和业务现场,缩短故障排查时间。就启动分析这项能力来看看,U-APM 都做了什么。

U-APM 支持启动趋势分析、慢启动分析、启动崩溃分析。

启动趋势分析

启动趋势较为直观的展示应用启动耗时的平均值、分位值、区间分布等数据,以及启动阶段的性能分解数据,也能分析出,多版本迭代后,启动时间的分布状况。

2.jpg

3.jpg

4.jpg

慢启动分析

慢启动分析,有助于开发者追根溯源,该功能展示慢启动情况的占比以及慢启动设备列表,您可以在启动设置中自定义慢启动的划分,默认首次启动/冷启动超过3秒为慢启动,热启动超过1秒为慢启动。

冷启动阶段的慢启动分析,直观表现出慢启动比例以及慢启动平均耗时。

5.jpg

慢启动分布,直观表现出,慢启动分布的设备、系统、运营商、版本、渠道、地域。

6.jpg

启动崩溃分析

归纳启动阶段中出现的崩溃信息,支持划分首次启动、冷启动、热启动状态下的崩溃,默认启动耗时上限为8秒,超出时间的崩溃不被划分至启动崩溃。

7.jpg

8.jpg

这对减少应用启动时间,提供了巨大帮助,官方已提供Demo

总结

移动端性能优化环环相扣,启动时间优化也是较为重要的一个环节,U-APM 的出现,无疑是开发者的福利,帮助开发者及早发现问题,解决问题,至于 U-APM 其他功能,可以登录 官方网站 去体验。

作者:任裕斌

原文链接
本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/512068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第25版 OpenStack Yoga 已发布

OpenStack社区今日正式发布第25版-Yoga,该版本通过支持先进的硬件技术如SmartNIC DPUs,优化与云原生软件如Kubernetes、Prometheus等的集成以及减少技术债等方式来保持OpenStack内核的稳定性与可靠性。 OpenStack作为开源基础设施即服务(Iaa…

项目实战总结以及接入U-APM

简介: 导致 App 性能低下的原因有很多,除去设备硬件和软件的外部因素,其中大部分是开发者错误地使用线、系统函数、编程范式、数据结构等导致的。即便是较有经验的程序员,也很难在开发时就能避免所有导致性能低下的“坑”&#xf…

oracle redo 200mb,Oracle的redo log在各场景下的恢复

Oracle的redo log非常重要,redo log损坏将导致数据库开法开启或数据丢失,针对redo log在各种场景下如何打开或恢复数据库,特别模拟测试说明:各场景包括如下(共6个场景):场景一.非归档下inactive状态的redo 恢复场景二.非归档下act…

站在原地就是退步——除了死磕通道,云通讯服务商还该做些什么?

受访嘉宾:吴佳钊,杭州云片网络科技有限公司联合创始人、CTO 当前,全球通信云已经步入2.0时代,最大的变化在于通信形式的变革:传统短信语音的通信形式将逐步向包括即时通讯IM实时音视频RTC的互联网通信转变。尤其在5G时…

Cube 技术解读 | 详解「支付宝」全新的卡片技术栈

简介: 魔方卡片(Cube),让 App 首页实现敏捷更新。 CodeHub#7 正式落幕,来自蚂蚁集团的技术专家「京君」与掘金社区的开发者们分享了「支付宝」全新的卡片技术栈——魔方卡片(Cube)。 京君围绕 C…

庖丁解InnoDB之REDO LOG

简介: 数据库故障恢复机制的前世今生一文中提到,今生磁盘数据库为了在保证数据库的原子性(A, Atomic) 和持久性(D, Durability)的同时,还能以灵活的刷盘策略来充分利用磁盘顺序写的性能,会记录REDO和UNDO日志,即ARIES方…

Web 自动化神器,批量下载美图,可直接导入使用

‍‍作者 | 小碗汤来源 | 进击云原生今天为大家分享一款前端自动化操作神器: Automa。Automa介绍它是一款 Chrome 插件,即使你不会写代码,也能按照自己的需求,完成一系列自动化操作。利用它,你可以将一些重复性的任务实现自动化、…

RocketMQ 5.0 POP 消费模式探秘

简介: POP Consumer—使客户端无状态,更轻量! 作者:凯易&耘田 前言:随着 RocketMQ 5.0 preview 的发布,5.0 的重大特性逐步与大家见面。POP Consumer 作为 5.0 的一大特性,POP 消费模式展现…

【ESSD技术解读-01】 云原生时代,阿里云块存储 ESSD 快照服务如何被企业级数据保护所集成?

简介: 本文描述了阿里云块存储快照服务基于高性能 ESSD 云盘提升快照服务性能,提供轻量、实时的用户体验及揭秘背后的技术原理。依据行业发展及云上数据保护场景,为企业用户及备份厂商提供基于快照高级特性的数据保护的技术方案,满…

一把王者的时间,我就学会了Nginx

作者 | 步尔斯特来源 | CSDN博客Nginx 简介Nginx("engine x")是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 nginx 网站用户有&…

【ESSD技术解读-02】企业级利器,阿里云 NVMe 盘和共享存储

简介: 当前 NVMe 云盘结合了业界最先进的软硬件技术,在云存储市场,首创性同时实现了 NVMe 协议 共享访问 IO Fencing 技术。它在 ESSD 之上获得了高可靠、高可用、高性能,同时基于 NVMe 协议实现了丰富的企业特性,如…

php数组json函数,php数组转json的函数是什么

php数组转json的函数是json_encode()。json_encode()函数可以对变量进行JSON编码,将其转换为json字符串数据,语法格式“json_encode (value)”。本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑php数组如何转为json&#xff1…

使用友盟+的APM服务实现对移动端APP的性能监控

简介: 对于信息系统服务,一般我们的重点监控对象都是核心的后端服务,通常会采用一些主流的APM(Application Performance Management)框架进行监控、告警、分析。那么对于移动端的APP、小程序的运行时状态如何进行实时监控与分析呢&#xff1f…

首届“中国物联网数据基础设施最佳案例评选”结果出炉

供稿 | 映云科技 出品 | CSDN云计算 随着物联网技术的成熟与普及,如今的世界早已进入万物互联的时代,全球年活跃连接的物联网设备已达数百亿规模 (IoT Analytics, 2021)。海量物联设备产生的数据,需要通过统一汇聚和…

Serverless 工程实践 | 快速搭建 Kubeless 平台

简介: Kubeless 是基于 Kubernetes 的原生无服务器框架。其允许用户部署少量的代码(函数),而无须担心底层架构。 快速搭建 Kubeless 平台 Kubeless 简介 Kubeless 是基于 Kubernetes 的原生无服务器框架。其允许用户部署少量的…

并发编程实践之公平有界阻塞队列实现

简介: JUC 工具包是 JAVA 并发编程的利器。本文讲述在没有 JUC 工具包帮助下,借助原生的 JAVA 同步原语, 如何实现一个公平有界的阻塞队列。希望你也能在文后体会到并发编程的复杂之处,以及 JUC 工具包的强。 作者 | 李新然 来源 | 阿里技术公…

iOS App 启动优化

简介: 作为程序猿来说,“性能优化”是我们都很熟悉的词,也是我们需要不断努⼒以及持续进⾏的事情;其实优化是⼀个很⼤的课题,因为细分来说的话有⼤⼤⼩⼩⼗⼏种优化⽅向 ,但是切忌在实际开发过程中不能盲⽬…

apache1.3 php编译,安装Apache1.3.29 - Linux+Apache+Mysql+PHP典型配置详解_Linux教程_Linux公社-Linux系统门户网站...

2.安装Apache1.3.29。我没有选择安装Apache2.0是我对他还是不放心,因为网上最新公布的apache的漏洞基本上是针对2.0,当然大家可以自己选择安装相应的版本。我这里讲的都是采用DSO动态编译的方法编译Apache.至于有关apache的编译方法,可以参考…

前后端、多语言、跨云部署,全链路追踪到底有多难?

简介: 完整的全链路追踪可以为业务带来三大核心价值:端到端问题诊断,系统间依赖梳理,自定义标记透传。 作者 | 涯海 全链路追踪的价值 链路追踪的价值在于“关联”,终端用户、后端应用、云端组件(数据库…

供应商太多,怎么才能高效比价?

本篇文章暨 CSDN《中国 101 计划》系列数字化转型场景之一。 《中国 101 计划——探索企业数字化发展新生态》为 CSDN 联合《新程序员》、GitCode.net 开源代码仓共同策划推出的系列活动,寻访一百零一个数字化转型场景,聚合呈现并开通评选通道&#xff0…