UIWebView 组件的启动时间?
Posted
技术标签:
【中文标题】UIWebView 组件的启动时间?【英文标题】:Startup time of UIWebView component? 【发布时间】:2012-12-15 06:35:24 【问题描述】:对于 ios 应用程序(用 C#/MonoTouch 编写),我使用 UIWebView 动态呈现一些内容。虽然这工作正常,但我遇到了一个烦人的问题:我第一次使用 UIWebView(自应用程序启动以来),显示任何内容都需要几秒钟。这可以克服吗?
我不“回收”实例化的 UIWebView,在每个屏幕上我使用一个 UIWebView,我创建一个新的 viewcontroller/UIWebView 组合。
我尝试在我的 appdelegate 中实例化一个随机 UIWebView,但这不会产生任何效果(可能是因为它不可见)。
谢谢!
【问题讨论】:
WebView 内容是本地的还是远程的? 【参考方案1】:首先你最好fire outApple's Instruments 找出时间的确切去向。
我怀疑这至少部分来自于在您的应用程序进程中加载和初始化网络浏览器库。这将是一个一次性的代价,听起来与您的描述相似。
如果确实如此,那么您也许可以预加载该库,例如当您启动应用程序时,在一个单独的线程中(但注意不要调用任何线程敏感代码)。
这应该使 first 使用时间类似于 second (以及更多)时间。由于该初始化将在单独的线程上完成,因此它不会对您的应用程序初始化产生太大影响(至少在多核设备上)。
【讨论】:
非常感谢。使用 Instruments 工具,我发现我的 UIWebView 中加载的 javascript 导致了这种情况。不加载 Js 使 UIWebView 启动得非常快。附带说明:问题本身仍然很奇怪,加载的 js(jquery.mobile,缩小版)仅在应用程序启动后加载的第一个 html 中加载时很慢。如果我将它加载到另一个随机 html 中,它会加载得非常快。奇怪... @RobinDiederen 我很高兴它有所帮助 :-) 请花点时间投票或接受答案(请参阅常见问题解答),因此这对其他人也有用。欢迎使用 ***!【参考方案2】:你想玩弄这些方法:
-(void)webViewDidStartLoad:(UIWebView *)webView
-(void)webViewDidFinishLoad:(UIWebView *)webView
在这些方法中添加条件,然后您可以让 ViewController 在网页加载时执行操作。
【讨论】:
以上是关于UIWebView 组件的启动时间?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以从 UIWebView 中的页面启动 iTunes?
如何使用 Safari 应用程序在 UIWebView 中启动链接?