当我将 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 应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
当我将 .txt 文件加载到我的程序中时,如何删除这些随机整数(我根本没有输入)
使用 Swift 3 将 iframe 标记(视频)从 html 字符串加载到 Web 视图中