Недавно я заметил, что в моем приложении время от времени возникают LAG. и под LAG я подразумеваю, что это может занять до 40 секунд, зависит от того, использую ли я Wi-Fi или мобильные данные...
Я загружаю URL-адрес страницы, а затем загружаю 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");
После вызова URL-адреса загрузки страница отображается в веб-представлении, пользовательский интерфейс реагирует, я могу нажимать кнопки, возвращаться и перемещаться по приложению...
НО
Сценарий, который я пытаюсь запустить, не выполняется до тех пор, пока DEV_ACTION_COMPLETED не будет напечатано в журнале, затем все возвращается в нормальное русло, вызывается onPageFinished и мгновенно запускает сценарий. Проблема в том, что это может занять до 40 секунд.
== ОБНОВЛЕНИЕ ==
Кажется, что задержка растет до какого-то момента, а после этого задержка сокращается до нуля и снова растет... это как последовательность: 0,1,2,4,8,16,32... и затем начинается от 0.
Может быть, это потому, что я создаю новые действия с веб-просмотром за слишком короткое время?
Есть предположения?
webView.setWebChromeClient(new WebChromeClient()); webView.setWebViewClient(new WebViewClient());
передwebSettings.setJavaScriptEnabled(true);
. Также посмотрите на это: stackoverflow. ком/вопросы/5820237/ - person Vrashabh Irde   schedule 15.08.2013