Для отображения индикатора выполнения достаточно методов onPageStarted и onPageFinished; но если вы хотите иметь флаг "is_loading" (наряду с перенаправлениями страниц, ...), эти методы могут выполняться с непоследовательностью, например, "onPageStarted> onPageStarted> onPageFinished> onPageFinished" очередь.
Но с моим коротким тестом (протестируйте его самостоятельно), очередь значений метода onProgressChanged равна "0-100> 0-100> 0-100> ..."
private boolean is_loading = false;
webView.setWebChromeClient(new MyWebChromeClient(context));
private final class MyWebChromeClient extends WebChromeClient{
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 0){
is_loading = true;
} else if (newProgress == 100){
is_loading = false;
}
super.onProgressChanged(view, newProgress);
}
}
Также установите «is_loading = false
» при закрытии активности, если это статическая переменная, потому что активность может быть завершена до окончания страницы.