WebView 中的视频 - ApplicationContext vs Activity Context

Posted

技术标签:

【中文标题】WebView 中的视频 - ApplicationContext vs Activity Context【英文标题】:Video in WebView - ApplicationContext vs Activity Context 【发布时间】:2012-06-03 06:53:02 【问题描述】:

我正在WebView 中播放视频。

如果要避免内存泄漏,则必须使用 ApplicationContext(相对于 Activity 上下文)来实例化 WebView (refer to this)

如果我传入ApplicationContext 并且WebView 中的VideoView 需要创建一个对话框(通常用于“无法播放此视频”),我会得到一个BadTokenException (refer to this)

我们是否应该在内存泄漏或潜在的 ANR 之间做出决定?

【问题讨论】:

【参考方案1】:

我从上面的 cmets 和进一步的测试中得出结论,问题是 SDK 中的一个错误:通过 XML 布局创建 WebView 时,活动作为 WebView 的上下文传递,而不是应用程序上下文。完成活动后,WebView 仍然保留对活动的引用,因此活动不会从内存中删除。我为此提交了错误报告,请参阅上面评论中的链接。

webView = new WebView(getApplicationContext());

【讨论】:

【参考方案2】:

这绝对是一个bug,或者api设计真的很糟糕,它没有给出任何错误提示。相信很多开发者都遇到过这个问题。

【讨论】:

以上是关于WebView 中的视频 - ApplicationContext vs Activity Context的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 sdcard 中的 webview 播放 html 中的视频

如何清除 Webview 内容以更改 Android Oreo 中的视频

WebView 中的视频 - ApplicationContext vs Activity Context

WebView 中的 Android HTML5 视频

使用 React Native 的 Webview 和 listview 中的 Youtube 视频

webview 中的视频应在 android 中的 onShowCustomView() 方法上全屏显示