我怎样才能知道我的WebView加载100%? [英] How can I know that my WebView is loaded 100%?
问题描述
我想在我的WebView加载一些HTML code包含的JavaScript。
现在,我要测试是否我的WebView是前5 secondes加载。我试过的方法 getProgress()
,但有时我得到的进展是100,但是我的web视图没有加载。
有另一种方式,以确保我的web视图加载100%?
这是我的code部分:
sdk.getWebView()loadDataWithBaseURL(notreal /,data_html,MIME_TYPE,ENCODING_UTF_8,空)。
定时器定时=新的Timer();
TimerTask的任务=新的TimerTask(){
@覆盖
公共无效的run(){
Log.i(TAG,进步鳍=+ sdk.getWebView()getProgress());
如果(sdk.getWebView()getProgress()< 100){
//取消web视图
sdk.getContext()。runOnUiThread(新的Runnable(){
@覆盖
公共无效的run(){
。sdk.getImgView()setVisibility(View.VISIBLE);
。sdk.getWebView()setVisibility(View.GONE);
}
});
}
//否则,web视图被加载
其他{
// prepare的WebView
sdk.getContext()。runOnUiThread(新的Runnable(){
@覆盖
公共无效的run(){
//隐藏的ImageView
。sdk.getImgView()setVisibility(View.GONE);
。sdk.getWebView()setVisibility(View.VISIBLE);
}
});
}
}
};
timer.schedule(任务,5000);
由于在此间表示:<一href="http://stackoverflow.com/questions/3149216/how-to-listen-for-a-webview-finishing-loading-a-url-in-android/5172952#5172952~">How听一个web视图加载完成在Android中的URL?
布尔loadingFinished = TRUE;
布尔重定向= FALSE;
mWebView.setWebViewClient(新WebViewClient(){
@覆盖
公共布尔shouldOverrideUrlLoading(web视图查看,串urlNewString){
如果(!loadingFinished){
重定向= TRUE;
}
loadingFinished = FALSE;
view.loadUrl(urlNewString);
返回true;
}
@覆盖
公共无效onPageStarted(web视图查看,字符串URL,位图facIcon){
loadingFinished = FALSE;
// SHOW装载如果它不是已经初见端倪
}
@覆盖
公共无效onPageFinished(web视图查看,字符串URL){
如果(!重定向){
loadingFinished = TRUE;
}
如果(loadingFinished&安培;&安培;!重定向){
//隐藏加载完毕
} 其他{
重定向= FALSE;
}
}
});
I'm trying to load in my WebView some HTML code that contains JavaScript.
Now , I want to test if my WebView is loaded before 5 secondes. I've tried the method getProgress()
, but sometimes I get that the progress is 100, but my Webview is not loaded.
Is there another way to be sure that my Webview is loaded 100%?
This is a part of my code :
sdk.getWebView().loadDataWithBaseURL("notreal/", data_html,MIME_TYPE,ENCODING_UTF_8,null);
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run(){
Log.i("TAG", "progress fin = "+sdk.getWebView().getProgress());
if(sdk.getWebView().getProgress() <100){
//cancel the webView
sdk.getContext().runOnUiThread(new Runnable() {
@Override
public void run() {
sdk.getImgView().setVisibility(View.VISIBLE);
sdk.getWebView().setVisibility(View.GONE);
}
});
}
// else ,the Webview is loaded
else{
//prepare webview
sdk.getContext().runOnUiThread(new Runnable() {
@Override
public void run(){
// hide imageView
sdk.getImgView().setVisibility(View.GONE);
sdk.getWebView().setVisibility(View.VISIBLE);
}
});
}
}
};
timer.schedule(task, 5000);
As said here: How to listen for a Webview finishing loading a URL in Android?
boolean loadingFinished = true;
boolean redirect = false;
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) {
if (!loadingFinished) {
redirect = true;
}
loadingFinished = false;
view.loadUrl(urlNewString);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap facIcon) {
loadingFinished = false;
//SHOW LOADING IF IT ISNT ALREADY VISIBLE
}
@Override
public void onPageFinished(WebView view, String url) {
if(!redirect){
loadingFinished = true;
}
if(loadingFinished && !redirect){
//HIDE LOADING IT HAS FINISHED
} else{
redirect = false;
}
}
});
这篇关于我怎样才能知道我的WebView加载100%?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!