首页 > 解决方案 > 带有 HTML5 视频的 WebView 中的内存泄漏

问题描述

我正在android中创建一个非常简单的应用程序。这个应用程序有 1 个 WebView。并在 index.html 文件上。

我想做的是,我想在 WebView 中运行 index.html(成功)

index.html 正在做的是,它从同一个文件夹中获取 3 个视频,并在无限循环中一个接一个地运行这些视频。一切都很顺利,但是,我能看到的最大问题是内存分析器。

在长期测试应用程序后,我发现本机内存一直在上升而不是下降。这真的很奇怪。

到目前为止我所做的,

1)测试不同WebView版本的应用程序,

2) 在 Cordova 中创建项目时测试相同的问题,

3)在离子中开发相同的东西,

4) 每隔一小时调用一次 System.gc(),

5) 从 HTML 和 javascript 中删除所有可能的代码

6)创建本机项目加载webview并在其中显示index.html

请检查下面的代码 index.htm 代码。

<!DOCTYPE html>
<html>
<head>

<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {
  box-sizing: border-box;
}

body {
  margin: 0;
  font-family: Arial;
  font-size: 17px;
}

#myVideo {
  position: fixed;
  right: 0;
  bottom: 0;
  min-width: 100%; 
  min-height: 100%;
}

.content {
  position: fixed;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);
  color: #f1f1f1;
  width: 100%;
  padding: 20px;
}

#myBtn {
  width: 200px;
  font-size: 18px;
  padding: 10px;
  border: none;
  background: #000;
  color: #fff;
  cursor: pointer;
}

#myBtn:hover {
  background: #ddd;
  color: black;
}
</style>
</head>
<body>

<video id="homevideo" width="100%" autoplay onended="run()" muted>
    <source src="video1.webm" type="video/webm">
Your browser does not support HTML5 video.
</video>

<script>

video_count =1;
videoPlayer = document.getElementById("homevideo");

function run(){
        video_count++;
        if (video_count == 4) video_count = 1;
        var nextVideo = "video"+video_count+".webm";
        videoPlayer.src = nextVideo;
        videoPlayer.play();
   };

</script>

</body>
</html>

如果需要任何进一步的信息,请告诉我。

.在此处输入图像描述

还要检查探查器报告。

提前致谢。

======================= 进一步分析===================

在 android 原生浏览器应用程序“com.android.browser”中花费了一整天并运行 index.html。它给出了几乎相同的结果。图表继续上涨。请检查所附图表 在此处输入图像描述

标签: javascriptandroidperformanceandroid-webviewhtml5-video

解决方案


推荐阅读