我想在页面加载时有某种繁忙的指示器。我的指示器将像闪屏一样全屏显示。这是因为 android webview 在开始加载之前会将页面空白为白色,这与普通浏览器不同。
可能会建议一个简单的解决方案。例如,设置 loading true inonPageStarted()
和设置 false in onPageFinished()
。
@Override
public void onPageFinished(WebView view, String url) {
setLoading(false);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
setLoading(true);
}
这样做的问题是,我正在加载的网站单击一次会导致多个开始/完成周期。也许这是重定向或 iframe。我不确定......但结果是“忙碌”指示灯令人不安地闪烁。
考虑到这一点,另一个想法是保持加载页面的计数——在 中递增onPageStarted()
和递减onPageFinished()
。像这样的东西,
private int loadingCount = 0;
@Override
public void onPageFinished(WebView view, String url) {
loadingCount--;
if (loadingCount == 0) {
setLoading(false);
}
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
if (loadingCount == 0) {
setLoading(true);
}
loadingCount++;
}
我遇到了这个问题:页面开始/页面完成不匹配。我不确定为什么,但我认为它可能需要重定向。
有任何想法吗?