Mah*_*ran 10 android android-webview webviewclient
我的问题与这一个人不同.我想在页面加载开始时我的进度对话框开始,在网页加载完成页面加载时结束.我的问题是进度对话框启动并永远不会dismissed.I已设置断点它表明进度对话框启动并获得驳回多次然后开始甚至后页面加载完成,不会被解雇.我的问题是为什么onPageStarted多次执行单页加载?为什么在完成页面加载后没有调用onPageFinished?
myWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
myWebView.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(myWebView, url, favicon);
Log.d("mytag","Page Loading Started");
//myURLProgressDialog= ProgressDialog.show(WebviewExampleActivity.this, "Page Loading", "Wait for a moment...");
}
@Override
public void onPageFinished(WebView view, String url) {
Log.d("mytag","Page Loading Finished!");
super.onPageFinished(myWebView, url);
//myURLProgressDialog.dismiss();
}
});
Run Code Online (Sandbox Code Playgroud)
我自我标记的过滤日志就像这样加载单页:
10-06 10:32:49.298: DEBUG/mytag(508): Page Loading Started
10-06 10:32:49.998: DEBUG/mytag(508): Page Loading Started
10-06 10:32:50.048: DEBUG/mytag(508): Page Loading Finished!
10-06 10:32:50.048: DEBUG/mytag(508): Page Loading Started
10-06 10:33:00.898: DEBUG/mytag(508): Page Loading Finished!
Run Code Online (Sandbox Code Playgroud)
当我点击已加载页面上的链接时,它工作正常.这是日志:
10-06 10:59:25.098: DEBUG/mytag(543): Page Loading Started
10-06 10:59:30.889: DEBUG/mytag(543): Page Loading Finished!
Run Code Online (Sandbox Code Playgroud)
检查它是否已打开.isShowing().
final ProgressDialog mProgressDialog = new ProgressDialog(this);
mProgressDialog.setMessage("Loading...");
browser.setWebViewClient(new myViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
if(!mProgressDialog.isShowing())
{
mProgressDialog.show();
}
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if(mProgressDialog.isShowing()){
mProgressDialog.dismiss();
}
}
});
Run Code Online (Sandbox Code Playgroud)
如果在正在加载的页面中有ajax调用,则只有在这些调用完成时才会调用onPageFinished().最好使用window.setTimeout()进行调用.在这种情况下,在这些调用中不会阻止UI线程,并且一旦主页加载就会调用onPageFinished().
| 归档时间: |
|
| 查看次数: |
11648 次 |
| 最近记录: |