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?

键盘启动时手指可滚动的 UIWebView

UIWebView 在 Safari 中启动

如何使用 Safari 应用程序在 UIWebView 中启动链接?

打开一个 URL 以在没有 UIWebView 的服务器上启动一个进程

从 UIWebView 启动移动 Safari *无需*修改应用程序源?