当前位置: 首页 > article >正文

从android-webview播放video标签黑屏谈起

最近发现一个有点意思的问题,发现某个app,在播放视频Video的时候,会黑屏,android部分的代码如下:

<activity
    android:name="com.netease.demo.lg.MainActivity"
    android:exported="true"
    android:hardwareAccelerated="false"/>
addView(
    WebView(this@MainActivity).also {
        it.settings.cacheMode = LOAD_CACHE_ELSE_NETWORK
        it.loadUrl("https://www.w3school.com.cn/i/video/shanghai.mp4")
    },
    ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT)
)

当然从不黑屏到黑屏涉及到其他很多模块,昨天按模块查了很久。
最后我对比了两个版本,hardwareAccelerated的配置不同,然后手动改了一下

我用这个开源工具(https://github.com/wuyisheng/apk-analyzer-cmd),把包解开,然后改下hardwareAccelerated,再打回去。
然后就正常播了。

系统在应用启动时解析 AndroidManifest.xml,并读取硬件加速的配置。当 Activity 创建时,系统会根据解析的结果设置 Window 的硬件加速标志。
在 WindowManager 里,也可以通过 setFlags() 方法设置硬件加速标志。如果硬件加速被禁用,系统将回退到软件渲染模式,仅使用 CPU 进行界面和视频的绘制。

软件渲染:android:hardwareAccelerated=“false”
好处是兼容性好。一些webview的特效,比如透明背景的滑动,可以以比较理想的方式绘制出来。但是hardwareAccelerated=“true”的时候,部分手机上会出现撕裂的效果。

硬件渲染:android:hardwareAccelerated=“true”
好处的性能好,对一些有性能要求的场景,会更好一点,比如快速滑动之类的效果。

现在不设置这个,默认都是true的。


http://www.kler.cn/a/321945.html

相关文章:

  • 前台项目启动/打包报错 Error: error:0308010C:digital envelope routines::unsupported
  • 教你如何在Java中操作Redis
  • 总结下android性能提升方案
  • 替代TPS7A11超高PRSS低噪声低静态低压差稳压器LDO
  • 传奇微端黑屏不更新地图?传奇微端架设教程——GOM引擎
  • matlab恢复默认窗口布局
  • 大模型分布式训练并行技术(七)-自动并行
  • Vue入门之生命周期
  • 计算机网络回顾
  • 数据分析入门
  • STM32精确控制步进电机
  • DK5V100R10VL贴片TO252功率12V4.3A同步整流芯片
  • 1.快速排序算法【分治】
  • python面向对象三大特性
  • 避免glibc版本而报错,CentOS等Linux安装node.js完美方法
  • 如何使用Optuna在PyTorch中进行超参数优化
  • 基于双向 LSTM 和 CRF 的序列标注模型
  • Unity C# 网络学习—WWWForm
  • WPS中让两列数据合并的方法
  • 计算机性能指标之CPU执行时间