Android应用程序关闭时不会出现任何错误WebView Javascript



我有一个从服务器下载的带有HTML网页的网络视图,我填充动态数据并向该网页添加信息行。我在该网页上使用了以下代码来启用javascript:

    class JSClass {
    Context jsContext;
    JSClass(Context c){
        jsContext = c;
}
public void getHTMLContent(String info)
{
    Log.i(TAG, "Info: "+info);
}
}
WebView webview = (WebView) findViewById(R.id.webView);
webview.loadDataWithBaseURL("", htmlcontent, "text/html", "utf-8", "");
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebChromeClient(new WebChromeClient());
webview.addJavascriptInterface(new JSClass(this), "Android");
webview.loadUrl("javascript:"+
    "var rows = document.getElementsByClassName('info');"+
    "if(rows !== null){"+
    "for(var i=0;i<rows.length;i++){"+
    "rows[i].onclick = function(){"+
    "var workId = 0;"+
    "workId = parseInt(this.cells[0].innerHTML);"+
    "window.Android.getHTMLContent(workId);"+
    "}}}"
);

当我点击任何一行时,我会根据行数据从服务器下载图像。它在第一次点击时运行良好,但在第二次点击时,应用程序会关闭,不会出现任何错误。我不明白原因。请帮忙。提前感谢

我认为您需要再次使用loadDataWithBaseURL,而不仅仅是loadUrl

请参阅此链接。有一节解释loadData,上面写着:

请注意,JavaScript的同源策略意味着,在使用此方法加载的页面中运行的脚本将无法访问使用"数据"以外的任何方案加载的内容,包括"http(s)"。若要避免此限制,请将loadDataWithBaseURL()与适当的基本URL一起使用。

终于!!修复了它。适配器保存了以前下载的图像以及第二次单击时下载的图像,我不明白为什么应用程序在关闭时也没有出现任何内存泄漏。。不管怎样,在使用后,它现在运行良好

adapter.clear();

或者在下载完所有的图像拇指后将适配器重新初始化为null(我不知道这是否非常有效)。清除适配器后,使用

adapter.notifyDataSetChanged();

相关内容

最新更新