android - 离开 Activity 后 WebView 似乎没有被销毁?

标签 android

我有一个带有 webview 的 Activity 。看起来 webview 不会随着 Activity 一起被破坏。为了演示,我创建了一个 html 页面,它运行一个计时器,每隔几秒加载一次图像资源。脚本在 Activity 被销毁后继续执行:

public class MyWebViewActivity extends Activity {
  private WebView mWebView;

  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.the_layout);

    mWebView = (WebView)findViewById(R.id.webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setBuiltInZoomControls(true);
    mWebView.setWebViewClient(new EmbeddedWebViewClient());
    mWebView.loadUrl("test url");
  }

  private class EmbeddedWebViewClient extends WebViewClient {
    @Override
    public void onLoadResource(WebView view, String url) {
        super.onLoadResource(view, url);

        if (Config.DEBUG) { Log.v(TAG, "onLoadResource(): " + url); }
    }
  }
}

所以上面只是在调用 onLoadResource() 时打印一条日志语句。这是测试 html 页面中的 javascript:

<html>
  <head>
    <script type="text/javascript">

      function load() {
        setInterval("doit()", 3000);
      }

      function doit() {
        Image1 = new Image(150, 20);
        Image1.src = "abc_" + Math.floor(Math.random()*100) + ".png";
      }

    </script>
  </head>

  <body onload="load()">
  </body>
</html>

上面只是在定时器间隔创建了一个图片资源,触发了EmbeddedWebViewClient()中的onLoadResource()方法。

是的,我可以在 LogCat 中看到消息在离开 Activity 后继续打印。我们必须以某种方式关闭 WebView 吗?也许这就是此处描述的问题:

http://code.google.com/p/android/issues/detail?id=9375

如果这是一个已知问题,是否应该将其记录在 API 文档中?

注意:在 android 2.3.4,Nexus S 上运行这个。

谢谢

最佳答案

这个解决方案对我有用:

在 MyActivity.java 文件中,我添加了:

@Override
protected void onDestroy() {
    webview.destroy();
    webview = null;
    super.onDestroy();
}

关于android - 离开 Activity 后 WebView 似乎没有被销毁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6499830/

相关文章:

android - HttpContext 不持有 cookie

java - 帮助在 Android 中获取 HTML 文件

android - 从命令行安装 android 旧系统镜像 (ABI)

java - Android 组件 ClassNotFoundException

java - 在 Android 中将循环音频与动画精确同步

android - 在 OpenUI5 中禁用设备后退按钮单击?

android - OpenGL ES 2.0 : Multiple light sources : Shader issue

Android Camera2 API MediaRecoder 如何捕获图像(不是流也不是文件)

java - 多段式钢丝绳

android - 带适配器的 Android 折线图