Performance
Mobile
Otimização
App
iOS
Android

移动性能优化:完整指南

移动性能优化:完整指南

表现就是经验。缓慢的应用程序会令人沮丧并被放弃。本指南介绍了优化 iOS 和 Android 应用程序性能的技术。

为什么性能很重要

经验

60fps是预期。詹克是不可接受的。

保留

缓慢的应用程序被卸载。

转换

每一秒的延迟都会降低转化率。

应用商店

评级经常提到性能。

性能指标

互动时间

应用程序需要多长时间才会响应。

帧速率

60fps = 每帧 16 毫秒。

内存使用情况

内存消耗。

电池耗尽

对电池的影响。

应用程序大小

下载和安装大小。

分析

iOS

仪器、Xcode 分析器。

###安卓

Android Studio 分析器、systrace。

测量什么

CPU、内存、网络、GPU、电源。

启动优化

冷启动

应用程序从头开始。最慢的。

热启动

流程存在,活动重新创建。

热启动

活动已存在,快来吧。

技巧

  • 延迟初始化
  • 推迟非必要的
  • 高效的启动画面
  • 基线配置文件(Android)

用户界面性能

60 帧/秒

渲染每帧需要 16 毫秒。

主线程

UI 仅在主线程上。

昂贵的操作

卸载后台线程。

布局优化

扁平的层次结构,循环的视图。

内存管理

泄漏

对象未释放。仪器/LeakCanary。

大型物体

图像未调整大小。

缓存

内存和处理之间的平衡。

低内存处理

当系统请求时释放资源。

图像优化

尺码

上传至所需大小。

###格式

WebP、AVIF 节省开支。

延迟加载

可见时充电。

缓存

内存和磁盘缓存。

图书馆

Glide、Coil (Android)、SDWebImage (iOS)。

网络优化

最小化请求

聚合、批量。

压缩

Gzip,布罗特利。

缓存

HTTP 缓存标头。

预取

预测必要的数据。

分页

不要一次加载所有内容。

列出性能

回收

RecyclerView、UICollectionView。

ViewHolder 模式

重用视图。

分页

无限滚动加载。

平滑滚动

预加载、缓存。

后台工作

线程

协程 (Kotlin)、GCD (Swift)。

避免阻塞

主线程自由。

取消

取消不必要的工作。

电池优化

地点

所需的最低精度。

唤醒锁

快速使用和释放。

背景

最大限度地减少后台工作。

传感器

不使用时注销。

应用程序大小

###资产

压缩图像,删除未使用的图像。

依赖关系

只做必要的事情。

代码分割

按需交付 (Android)。

应用程序包

Play/App Store 生成优化的 APK/IPA。

数据库性能

索引

在频繁的查询中。

批量操作

团体著作。

异步查询

不要阻止用户界面。

房间/核心数据

有效地使用 ORM。

工具

iOS

  • 仪器仪表
  • Xcode 内存图
  • 度量工具包

###安卓

  • Android Studio 分析器
  • 泄漏金丝雀
  • 基线配置文件

跨平台

  • Firebase 性能
  • 脚蹼

性能测试

基准

一致地衡量指标。

设备范围

在弱设备上进行测试。

自动化

检测回归的测试。

常见错误

过早优化

优化真正的瓶颈。

内存泄漏

开发过程中未检测到。

主线程阻塞

主线程上的 I/O。

图像尺寸

加载缩略图的完整分辨率。

结论

性能是一个关键特征。在优化之前进行分析,关注真正的瓶颈并持续监控。快速的应用程序可以留住用户并产生更好的评论。

##常见问题解答

1) 从哪里开始优化? 先介绍一下。确定真正的瓶颈。

2) 您的目标帧速率是多少? 60 帧/秒。在高刷新设备上为 120fps。

3) 内存泄漏常见吗? 比你想象的还要多。使用检测工具。

4) 跨平台会影响性能吗? 可以。 Flutter 和 React Native 都有开销。但它们是可以优化的。

5) 如何测试性能? 真实设备,尤其是较弱的设备。

另请阅读

  • 【应用中的电池消耗:如何优化移动性能0
  • 【移动端性能优化-初学者实例1
  • [Android 原生开发:Kotlin 完整指南2
  • [原生 iOS 开发:Swift 和 SwiftUI 完整指南3
  • 【Android原生开发:如何采取必要步骤4
  • 【iOS原生开发:初创公司如何选择5