想要就在Android上启用和停用网络视图的最佳实施方式提出一些建议吗?
我有这个应用程序,它可以在其中打开网址(通过使用网页浏览),然后弹出并覆盖80%的用户界面,当用户导航到应用程序的另一个页面时,它应该隐藏/关闭网页视图但是可以在需要时重新打开。
以下是代码片段
Wage: 425
Wage: 240
Wage: 180
那么这就是我关闭它的方式
private WebViewInterface webViewInterface = new WebViewInterface() {
@Override
public void onOpenURL(String url) {
navBrowserWV.setVisibility(View.VISIBLE);
navBrowserWV.getSettings().setJavaScriptEnabled(true);
navBrowserWV.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
handler.proceed();
}
});
navBrowserWV.loadUrl(url);
}
};
此实现的问题在于它首先正确显示页面,但是当我关闭它然后再次使用URL打开Web视图时,它不再加载页面只是一个白色背景(记录器上没有错误)顺便说一句)。
想就如何解决这个问题寻求帮助。感谢
答案 0 :(得分:0)
最后,经过长时间在互联网上挖掘答案后,我发现这篇关于杀死Android webview [link]的帖子。
没有真正的方法来杀死WebView(它总会在你的进程中运行,你无法对它做任何事情)。所以你只需要告诉WebView加载一个虚假的页面,对我来说,我做了:
this.navBrowserWV.loadUrl("about:blank");
现在可以使用了!
来自网站的引用
4.1 .getSettings().setJavaScriptEnabled() Inhalt
好吧,你会认为在WebView的设置中禁用JavaScript会产生即时效果,简而言之:它没有。只有在重新加载页面之后才会有更多的javascript,这在设计上并不好,因为页面的渲染效果还是差不多。
4.2 .stopLoading() Inhalt
由于XHR从另一台服务器“加载”某些内容,您可能会认为调用“webview.stopLoading()”会产生影响。简而言之:它没有。仅适用于HTML文件中包含的资源。可惜,是不是......好吧,也许不是,因为在恢复活动后没有“startLoading()”方法来恢复XHR。
4.3 .destroy() Inhalt
作为最后的手段,人们可能会想到“破坏()”这个东西,而且事实上,WebView本身在此之后无法访问。然而,它的线程继续作为巨大的RAM空间中的某个地方的僵尸而存在,并且还继续发送XHR请求......
4.4 .pauseTimers() / resumeTimers() Inhalt
简而言之:不,不行。如果不是为了控制JavaScript定时器,我甚至不知道这些方法有什么用处。没有任何简单的HTML,AFAIK。
更新:当仅涉及定时器时,这些功能似乎在2.3.5及更高版本上工作,但是,当调用该功能时没有定时器处于活动状态时,一切都是徒劳的。根据我的使用案例:当XHR处于活动状态时暂停应用程序(而不是计划下一个XHR调用的运行计时器),没有任何反应,下一个计时器继续不受阻碍。
我希望这能帮助那些遇到与我相同问题的人。