【问题标题】:Can I lazy-load my libraries so they don't delay my app startup?我可以延迟加载我的库,这样它们就不会延迟我的应用程序启动吗?
【发布时间】:2011-05-18 14:27:23
【问题描述】:

我的应用程序在启动过程中需要很长时间,同时会显示启动画面。我认为这是由于 iOS 必须加载的内容的大小,包括库。我的问题是,我可以在用户真正想要使用它的那一刻加载它们,从而缩短启动时间吗? 还有其他方法可以缩短吗? 非常感谢。

【问题讨论】:

    标签: iphone performance startup


    【解决方案1】:

    所有第 3 方库都静态链接到您的应用。理论上,您只能延迟加载 Apple 自己的弱绑定库。我不知道如何在 iOS 上控制此过程。在 Mac 上当然可以。

    【讨论】:

    • 您可以将链接库设置为弱,即使它们是第 3 方,(目标>信息>常规)但我不知道这是否会产生任何影响。
    • @toupper 据我了解。设置链接很弱的唯一原因是确保您的应用程序解析您的应用程序所在平台的符号,而不是使用您的应用程序编译到的平台的符号。让自己的库变弱是没有任何意义的。
    【解决方案2】:

    只要您不直接需要它们,当然可以。

    LazyLoad 也不仅限于您应用它的内容,例如,如果您有一个巨大的 Opengl 场景,您可以选择在用户实际点击您需要的按钮之前不加载其纹理。

    这样做的缺点是打开需要延迟加载的任何内容的等待时间将被移到应用程序的下方(当用户想要玩时,他将有更长的加载时间)。

    您可以尝试启动在启动时处理加载的线程,并从您执行 setBooleanLibXFinishedLoading 的线程开始,这样您的应用程序只需等待所有 booelan 设置为继续。 这应该会减少用户的明显等待时间,同时优化实际花费的加载时间。

    希望对你有帮助

    杰森

    【讨论】:

    • 感谢您的回复杰森。从您的评论中,我想到了这个问题:如何避免 iOS 一开始就加载库?我以后如何加载它们?非常感谢。
    • 好的,你能添加一个你称之为加载库的例子吗? (对不起,我现在主要在做android,所以我对IOS有点生疏)
    • 我的假设是 iOS 会在启动时加载我们添加到项目中的框架和库(例如 libGoogleAnalytics.a)。我没有在代码中做任何事情来加载它们,只导入文件。也许在这方面有更多经验的人可以纠正我。
    猜你喜欢
    • 2018-04-02
    • 2015-10-06
    • 2019-05-12
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多