如何检测Android WebView何时加载页面?

use*_*834 2 android webview

我有一个应用程序,它显示启动页面并在 WebView 中加载 URL 时删除该启动页面。以下是我们用来移除启动页面的相关代码:

browser.setWebViewClient(new BrowserClient() {
 @Override
 public void onPageFinished(WebView view, String url) {
  super.onPageFinished(view, url);
  // Work around for WebView onPageFinished called twice                
  if (flag == true) {
   browser.setVisibility(View.VISIBLE);
   splashImage.setVisibility(View.INVISIBLE);
   pageLoader.setVisibility(View.INVISIBLE);
  } else {
   flag = true;
  }
 }
});
Run Code Online (Sandbox Code Playgroud)

这段代码有效......除了它很慢。在网页加载很久之后,启动页面需要很长时间才能删除。

是否有任何关于如何可靠地检测 WebView 何时加载页面的提示?过去几天我一直在研究这个,我似乎无法想出任何可靠的东西。

我看到的最有希望的是以下内容,但将此代码放在 Android 控制台中会引发错误:

@Override
public void invalidate() {
 super.invalidate();

 if (getContentHeight() > 0) {
  // WebView has displayed some content and is scrollable.
 }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑:有很多答案提出 onPageFinished,甚至有人将其标记为重复,并带有指向使用 onPageFinished 的解决方案的链接。伙计们,我们已经在使用 onPageFinished 了。由于不可靠,我们正在寻找 onPageFinished 的替代方案。

Moh*_*har 5

如果您需要通过使用此 Web 客户端的加载页面进度来实现此目的,您也可以使用它。

 webView.setWebChromeClient(new WebChromeClient() {
                public void onProgressChanged(WebView view, int progress) {
                   Log.e("progress", ""+progress);
                   if (progress == 100) { //...page is fully loaded.
                     // TODO - Add whatever code you need here based on web page load completion...                  
                   } 
                }
            });
Run Code Online (Sandbox Code Playgroud)