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