Когда я загружаю URL-адрес через WebView, я иногда получаю множество таких сообщений:
10-19 19:18:38.056: ERROR/Web Console(6524):
Uncaught Error: Too much time spent in unload handler. at v8/DateExtension:1
Что означает эта ошибка?
Когда я загружаю URL-адрес через WebView, я иногда получаю множество таких сообщений:
10-19 19:18:38.056: ERROR/Web Console(6524):
Uncaught Error: Too much time spent in unload handler. at v8/DateExtension:1
Что означает эта ошибка?
Это, по-видимому, определено в DateExtension.cpp, в webkit. Это исключение С++, которое вызывается, если JS-крючок (вставленный в Date.getTime, если включен параметр enableSleepDetection (true)) вызывается более 1000 раз.
Возможно, вы захотите извлечь исходный код Android, чтобы изучить его больше. В файле нет документации.
Я получил ту же ошибку. После некоторого расследования я решил эту проблему. Возможно, этот код вам поможет:
{
webView = (WebView) view.findViewById(R.id.transcationwebview);
progressdialog = ProgressDialog.show(mContext, "",
mContext.getString(R.string.please_wait));
progressdialog.setCancelable(true);
progressdialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
webView.stopLoading();
// webView.clearView();
}
});
webView.setWebChromeClient(new MyChromeClient());
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setLayoutAlgorithm(
WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
// view.loadUrl(url);
return false;
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
if (progressdialog != null && progressdialog.isShowing()) {
progressdialog.dismiss();
}
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
// TODO Auto-generated method stub
}
});
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setPluginState(PluginState.ON);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setPluginsEnabled(true);
webView.setKeepScreenOn(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
}
public class MyChromeClient extends WebChromeClient {
@Override
public void onProgressChanged(WebView view, int newProgress) {
try {
if (progressdialog.isShowing()) {
progressdialog.setMessage(getString(R.string.loading)
+ newProgress + " %");
} else {
/*
* webView.stopLoading(); webView.clearView();
*/
}
} catch (Throwable e) {
e.printStackTrace();
}
}