【问题标题】:Major performance loss in UIWebView on iOS 9iOS 9 上 UIWebView 的主要性能损失
【发布时间】:2015-10-28 21:21:40
【问题描述】:

我已将我的问题归结为一个非常简单的场景,它似乎与 iOS 9+ 和 UIWebView 相关,并且网站具有大量页面加载(就像您从导航中获得的一样)。

我按照本教程 (http://conecode.com/news/2011/05/ios-tutorial-creating-a-web-view-uiwebview/) 使用 UIWebView 构建了一个简单的 iOS 应用程序。我将 UIWebView 指向一个看起来像我在底部的静态 html。

然后我使用按钮(或自动执行此操作的脚本)刷新页面,最终应用程序变得越来越慢(通常刷新 50-80 次左右)。我在页面中有列表用于演示,因为它允许您滚动,从而更快地突出显示问题。

对我解决这个问题有什么帮助或指导吗?

<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<FORM><INPUT id="demo" TYPE="button" onClick="history.go(0)" VALUE="refresh"></FORM>
    <ul data-role="listview" >
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
                <li>This is an Item</li>    
    </ul>
    <script>
        var elem = document.getElementById("demo");
        elem.value = Date();
        location.reload();
    </script>    
</body>
</html>

【问题讨论】:

  • 我解决了我的问题,方法是在我的应用程序中添加一个 hack 来跟踪页面加载的数量,在任意数量的加载后,我卸载控件并重新添加它。有一些额外的 BS 与此一起使用,以使其对用户来说看起来不明显。但从本质上讲,这是一种 hack,而不是正确的做法。
  • github.com/kirbysayshi/vash/issues/72 请在这个问题上获得战利品。也许它有帮助

标签: ios iphone uiwebview


【解决方案1】:

可能是内存问题。
在运行项目和重新加载/导航 UIWebView 时,在 Xcode 中观看内存报告(双击放大)。

如果它正在增长,请尝试删除 UIWebViews 缓存

Clearing UIWebview cache

【讨论】:

  • 虽然我没有看到像您的屏幕截图那样内存增加,但这确实有助于提高我的测试应用程序的性能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-08
  • 2015-12-04
  • 1970-01-01
  • 2019-02-09
  • 2019-02-05
  • 1970-01-01
相关资源
最近更新 更多