我最近注意到我的应用偶尔有LAG。而LAG我的意思是它可能需要40秒,取决于我是否使用Wifi或移动数据......
我加载页面网址,然后加载js执行:
webView = (WebView) view.findViewById(R.id.WebView);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
logDebug("Loading URL: " + url);
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return WrappingClass.this.shouldOverrideUrlLoading(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
logInfo("loading JavaScript to webview.");
webView.loadUrl("full-js-here");
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
logError("error code:" + errorCode);
super.onReceivedError(view, errorCode, description, failingUrl);
}
});
WebSettings webSettings = webView.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webView.requestFocus(View.FOCUS_DOWN);
webView.loadUrl("url");
调用加载网址后,页面显示在网页视图中,用户界面就会响应,我可以点击按钮,返回并导航应用程序......
BUT
我正在尝试运行的脚本未执行,直到将 DEV_ACTION_COMPLETED 打印到日志中,然后一切恢复正常,并且调用onPageFinished并立即运行脚本。问题是这可能需要40秒。
==更新==
似乎延迟正在增长到某一点,之后延迟缩短为零,再次增长......它就像一个序列:0,1,2,4,8,16,32 ......然后从0开始。
可能是因为我在很短的时间内用webview创建了新的活动吗?
有什么想法吗?
答案 0 :(得分:5)
我们已经设法为这个糟糕的问题制定了解决方案......无论我尝试过什么,我找不到这个问题的Java解决方案,但我们确实找到了一个HTML + JavaScript解决方案:
我们不是等待java的onPageFinish,而是注入一个java脚本来监听window.onLoad事件......
在那里我们注入了我们真正的JavaScript ......就像魅力......