我有一个带有 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/