gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:42:36 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com