Есть ли способ установить значение тайм-аута в WebView? Я хочу, чтобы WebView был установлен по тайм-ауту, если URL-адрес слишком медленный для ответа.
Android WebView TimeOut
comment
эта помощь помогает stackoverflow.com/a/7772884/169630
- person suraj jain   schedule 12.04.2012
Ответы (3)
Вы можете сделать это, установив таймер, который проверяет прогресс текущей страницы, вызвав getProgress (), и если по истечении определенного времени оно меньше некоторого порога, вы можете отклонить загрузку текущей страницы.
person
bhups
schedule
29.11.2010
Так вы имеете в виду, что я добавляю таймер и проверяю прогресс текущей страницы, вызывая getProgress (), если он еще не 100, я могу вызвать stopLoading ().
- person user430926; 29.11.2010
Мы можем использовать onLoadResource
метод WebViewClient
вместо Timer
. Нравится:
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressDialog.show();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d("WEBCLIENT", "onPageFinished");
}
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
Log.d("WEBCLIENT","onLoadResource");
if(webView.getProgress() == 100) {
progressDialog.dismiss();
}
}
}
person
John
schedule
21.07.2015
Я не думаю, что это сработает, если веб-представление полностью зависло.
- person Przemysław Wrzesiński; 21.09.2016
Если веб-страница застряла, это означает, что ее прогресс не будет 100, поэтому индикатор выполнения будет отображаться до тех пор, пока webView.getProgress () не станет 100
- person John; 12.12.2016
Вопрос был не в индикаторе выполнения, а в таймауте. Этот метод не будет работать, если загрузка веб-страницы полностью застрянет на каком-то проценте, потому что ни одна из этих функций не будет вызвана, поэтому не будет возможности предпринять действия.
- person Przemysław Wrzesiński; 12.12.2016
Да, ты прав. Затем таймер должен работать до тех пор, пока ресурсы не будут загружены.
- person John; 12.12.2016
отлично, сэкономь мое время
- person MehrAmoon; 14.02.2019
я использую
@Override
public void onReceivedError(WebView view, int errorCod,String description, String failingUrl) {
final Dialog dialog = new Dialog(MainActivity.this, android.R.style.Theme_NoTitleBar_Fullscreen);
dialog.setContentView(R.layout.alert_dialog);
Button btTryAgain = dialog.findViewById(R.id.bt_try_again);
btTryAgain.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
recreate();
}
});
dialog.show();
//Toast with error conection
Toast.makeText(getApplicationContext(), "Your Internet Connection May not be active Or " + description , Toast.LENGTH_LONG).show();
}
Где -alert_dialog- - это макет с кнопкой для повторной попытки
person
JoaquinBu
schedule
27.12.2020