当我将 HTML 字符串(大量数据)加载到 WebView 时,iPhone 应用程序崩溃

Posted

技术标签:

【中文标题】当我将 HTML 字符串(大量数据)加载到 WebView 时,iPhone 应用程序崩溃【英文标题】:iPhone Application crashes, when I load a HTML string(huge data) onto WebView 【发布时间】:2012-07-06 16:18:51 【问题描述】:

我有一个 Webview,我尝试在其中发布大量数据,比如大约 20 MB,其中包括图像。我已将所有内容收集到一个字符串中,并将该特定字符串传递给 webview。当字符串大小增加时会出现问题。如果字符串的大小较小,它可以正常工作。

我确实通过调试检查了控件是否到达了 WebViewDidFinishLoading 委托方法。完全加载的字符串被上传,但应用程序在几秒钟内崩溃。可能是什么原因?请帮帮我!我一直在敲马头。

【问题讨论】:

【参考方案1】:

您可能正在使用过多的内存。 ios 会杀死这样的应用程序。除了加载如此庞大的 html 之外,UIWebView 本身也存在内存问题。它被指责在缓存数据(图像等)时占用了太多内存

也许清空缓存会有所帮助。在didFinishLaunchingWithOptions 试试这个 -

 NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
 [NSURLCache setSharedURLCache:sharedCache];
 [sharedCache release];

当您收到内存警告时,请执行此操作 -

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 
    [[NSURLCache sharedURLCache] removeAllCachedResponses];

您只是在清除缓存以释放内存。

如果这也不起作用,那么我建议您想办法将 HTML 拆分为多个页面或其他方式来呈现数据。

【讨论】:

如果他想将 HTML 显示为单个页面,如何将单页 HTML 拆分为多页 html 并将其加载到 webview 中?【参考方案2】:

我在我的一个应用程序中遇到了这个问题。请检查以下链接以获取解决方案。我希望它运作良好。 https://***.com/a/56424953/8259188

【讨论】:

【参考方案3】:

使用 Instruments 来分析您的应用。很有可能您只是内存不足——对于 iOS 应用程序来说,20MB 是相当多的,如果您从部分构建该字符串,您可能会复制许多较小的字符串。了解您的应用在崩溃时使用了多少内存会很有用。

【讨论】:

【参考方案4】:

您是在应用程序启动时这样做吗?如果是这样,应用程序启动可能需要很长时间,并导致看门狗计时器终止应用程序。

【讨论】:

以上是关于当我将 HTML 字符串(大量数据)加载到 WebView 时,iPhone 应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

web 实现大量打印

将 utf-8 编码的文本加载到 MySQL 表中

当我将 .txt 文件加载到我的程序中时,如何删除这些随机整数(我根本没有输入)

使用 Swift 3 将 iframe 标记(视频)从 html 字符串加载到 Web 视图中

加载新的 html 字符串时如何防止 UIWebView 滚动到顶部?

回显大量 HTML 数据需要很长时间 PHP