UIWebView HTML 5 游戏 Canvas 在 iOS 9 中绘图缓慢,或者在 iOS 8.0 及更高版本中 WebGL 崩溃

UIWebView HTML 5 game Canvas drawing slowness in iOS 9, or WebGL crashing in iOS 8.0 and above

我在使用 UIWebView 和 运行 HTML 5 个游戏(另一位开发人员正在开发)时遇到了问题。我们尝试了两种不同的选择,但都不是最佳选择。

选项 1:他用 "canvas drawing" 渲染 HTML 5 游戏。当他这样做时,没有任何崩溃,但是在 iOS 9 中,当我们从后台返回应用程序时,Web 视图重新加载,但游戏运行速度比正常情况慢得多(问题不在 iOS 7.1 及以上)。慢得多我说的是动画的移动速度与我们第一次加载游戏时的速度不同。这个问题的奇怪之处在于,即使用户打开了不同的 HTML 5 游戏(我们正在添加多个游戏),该游戏的动画也较慢。当发布 UIApplicationWillResignActiveNotification 时,我尝试关闭 Web 视图控制器。当我以这种方式设置游戏时,仅当应用程序处于 4 秒时才会出现缓慢(这很奇怪)。

选项 2:他用 "WebGL" 渲染游戏。当他以这种方式呈现它时,当应用程序在 iOS 8.0 及更高版本上获得后台时应用程序崩溃。我对崩溃的研究是 iOS 无法在后台绘制 OpenGL ES。我假设 WebGL 命令是 运行 与 OpenGL ES 类似的命令,因此崩溃。在 UIApplicationWillResignActiveNotification 上关闭 Web View Controller 仍然会导致崩溃发生。

有没有其他人处理过这样的情况?

我还没有找到解决问题的好方法,但我确实找到了解决方法。

当我收到 App Will Resign Active 消息时,我从 UIWebViewController 的子视图中删除了 UIWebView。当我收到 Did Become Active 消息时,我将 UIWebView 添加到 UIWebViewController 的子视图。

此解决方案适用于这两种情况。