iPhone应用程序在将一个包含大量数据的HTML字符串加载到WebView时崩溃了。

3
我有一个Webview,我试图发布大量数据,比如20MB的图片。我已经将所有内容收集到一个字符串中,并将该字符串传递给Webview。当字符串大小增加时,问题就出现了。如果字符串的大小较小,则可以正常工作。
我通过调试检查了一下,发现控件进入了WebViewDidFinishLoading委托方法。完全加载的字符串被上传,但应用程序在几秒钟内崩溃了。可能的原因是什么?请帮帮我!我已经头疼了很久。
4个回答

1

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并在Webview中加载,以便将其显示为单个页面? - ViruMax

0
使用Instruments来分析您的应用程序。很有可能是因为内存不足--对于iOS应用程序来说,20MB已经相当大了,如果您正在从各个部分构建该字符串,则可能会复制许多较小的字符串。在应用程序崩溃时知道它使用了多少内存将非常有用。

0
你是在应用程序启动时执行它吗?如果是这样,可能会导致应用程序启动时间过长,从而导致看门狗定时器关闭应用程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接