美文网首页
iOS 之启动优化

iOS 之启动优化

作者: iOS小童 | 来源:发表于2019-05-21 17:50 被阅读0次

    启动优化

    应用启动过程中的一系列活动会影响初始加载时间,因此,为了获得更好的用户体验,必须使初始化活动的数量最小化。

    启动方式

    首次启动

    安装应用的首次启动,没有之前的状态,也没有本地缓存。

    1. 确定在展示UI前必须执行的任务:如崩溃报告系统
    2. 按顺序执行任务:因为任务间可能具有相互依赖性
    3. 将任务拆分为两类:主线程/子线程
    4. 其他任务可以在加载UI后执行或异步执行:延迟其他系统的初始化

    冷启动

    应用后续的启动,在启动期间,可能需要恢复原来的状态

    热启动

    应用处于后台,但并未被挂起或者关闭时,用户切换至应用而触发的启动。

    升级后启动

    1. 无本地缓存或者完全放弃缓存
    2. 本地缓存可用,可以直接使用或需要切换至升级版本

    影响启动性能的因素

    main()函数之前耗时的影响因素

    • 动态库加载越多,启动越慢。

    • ObjC类越多,启动越慢

    • C的constructor函数越多,启动越慢

    • C++静态对象越多,启动越慢

    • ObjC的+load越多,启动越慢

    main()函数之后耗时的影响因素

    • 执行main()函数的耗时

    • 执行applicationWillFinishLaunching的耗时

    • rootViewController及其childViewController的加载、view及其subviews的加载

    推送通知

    通知是内容驱动型应用的一个组成部分。

    远程通知

    -【普通离线(远程)push】:收到推送后(有文字有声音),点开通知,进入APP后,才执行-
    - (void)application:(UIApplication *)didReceiveRemoteNotification:(NSDictionary fetchCompletionHandler:(void result))handler *)application *)userInfo (^)(UIBackgroundFetchResult
    
    -【静默push】:收到推送(没有文字没有声音),不用点开通知,不用打开APP,就能执行
    - (void)application:(UIApplication *)application)userInfo didReceiveRemoteNotification:(NSDictionary fetchCompletionHandler:(void (^)(UIBackgroundFetchResultresult))handler
    - 用户完全感觉不到。
    

    本地通知

    10.0以前的方法
    - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
        
    }
    

    后台拉取

    要想启用后台拉取需要:

    1. 在项目中设置开启功能
    2. 设置刷新间隔
    3. 实现应用的委托方法

    相关文章

      网友评论

          本文标题:iOS 之启动优化

          本文链接:https://www.haomeiwen.com/subject/yrxszqtx.html