高性能iOS应用开发(二)(应用的生命周期)
应用的启动
首次启动
应用安装后首次启动时,没有任何的使用状态,也没有本地存储,即没有需要加载的内容或者需要从服务器下载初始数据。
一般的首次启动通常执行多个任务。
例如:
- 加载应用的默认项(用户的默认设置,子系统的配置)
- 检查私有/测试版本
- 获取和初始化应用的唯一标识符
- 初始化一些第三方SDK的配置(崩溃搜集,推送,埋点等)
- 初始化网络配置和建立网络链接
- 建立基础UI(导航器,主题等)
- 从服务器拉取最新内容和其他的更新
- 建立内存缓存(数据缓存,图片缓存)
对于优化我们可以做到:
- 确定在展示UI前必须执行的任务
- 按顺序执行任务
- 将任务拆分为主线程中执行的任务和非主线程的任务,分开执行
- 其他的次要任务(日志消息,跟踪事件)在加载UI后执行或异步执行
冷启动
除了初次启动意外事件,应用的其他启动(点击app图标启动等)期间,可能需要恢复原来的状态,比如,消息的聊天记录,用户上次浏览的文章页面,登陆用户的证书等等。
对于载入之前的状态多数需要从本地缓存加载数据,或者从服务器拉取数据。
一般先是加载旧的数据,最新的数据可用时再更新,将两个数据源同时注入视图中。
热启动
热启动指的是切换一个已经运行的应用。
- 应用重启
应用处于安全状态,或者运行很多动画时,可以监测背景和前景通知。在第一种情况下,应用每次进人前最状态时,都会展示登录界面,在后一种情况下,动画或者游戏状态会被智停,需要恢复。
- 深层链接
升级后启动
应用升级后的首次启动将遵循下列情形之一:
- 无本地缓存成应用完全放弃缓存
- 本地级存可用,可以直接使用或需要切换至升级版本。
【高性能iOS应用开发(二)(应用的生命周期)】本地数据发生改变时通知用户。以下的最佳实践可以让用户有更好的体验。
- 如果木地缓存可用,通知用户该情况。如果没有迁移到本地级存的必要,则无需通知用户,因为本地级存的使用是隐式的。
- 如果必须花几分钟对数据进行迁移,那么向用户展示个可以推迟该操作的选项。
- 如果从服务器检索数据更快、更容易,因而必须放弃本地缓存的使用,那么这种情况下需要通知用户。
推荐阅读
- 2020-04-07vue中Axios的封装和API接口的管理
- iOS中的Block
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 2019-08-29|2019-08-29 iOS13适配那点事
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- iOS面试题--基础
- 接口|axios接口报错-参数类型错误解决
- iOS|iOS 笔记之_时间戳 + DES 加密
- iOS,打Framework静态库
- 常用git命令总结