У меня есть активность, которая хранит 5 WebViews
в ViewFlipper
. Он показывает только по одному за раз. В onCreate () моей деятельности я загружаю первый WebView в основной поток, а остальные в фоновый поток.
Я ожидал увидеть WebView
сразу, пока остальные еще загружались. Я обнаружил, что первый WebView
я выполняю loadData()
с последними финишами. Я нашел это, установив WebChromClient
и проверив onProgressChanged()
. Первый WebView всегда загружается последним.
Я предполагаю, что функция WebView.loadData () работает асинхронно, но я понятия не имею, почему первый загружаемый файл всегда заканчивается последним, не всегда 2-го, 3-го, 4-го или 1-го, но 5-го, который последний в моем случай.
Кто-нибудь знает почему?
Вот пример кода:
Настройка моих веб-представлений
for( int i = 0; i < 5; i++ ){
WebView tempWebView = new WebView(this);
tempWebView.setWebChromeClient( new MyWebChromClient( i ) );
mFlipper.addView(tempWebView);
}
( (WebView)mFlipper.getChildAt(0) ).loadData( content, "text/html", "UTF-8" );
// load the others now in a background thread...
Вот мой WebChromClient
private class MyWebChromClient extends WebChromeClient{
private int webViewId;
public MyWebChromClient( int viewFlipperChildNum ){
webViewId = viewFlipperChildNum;
}
public void onProgressChanged(WebView view, int newProgress) {
if( newProgress == 100 )
Log.i("ChromClient", "WebView Id: " + webViewId + "Progress changed: " + newProgress );
};
}