Android多个网络视图问题:在其他视图加载之前无法加载第一个视图
我有一个活动,它将5个Android多个网络视图问题:在其他视图加载之前无法加载第一个视图,android,load,webview,Android,Load,Webview,我有一个活动,它将5个webview存储在ViewFlipper中。它一次只显示一个。在活动的onCreate()中,我在主线程上加载第一个WebView,在后台线程中加载其他WebView 我所期望的是在其他人仍在加载时立即看到WebView。我发现第一个WebView执行了loadData(),最后完成。我通过设置webchromeclient并检查onProgressChanged()找到了这个问题。第一个WebView似乎总是最后加载 我假设WebView.loadData()函数是异步
webview
存储在ViewFlipper
中。它一次只显示一个。在活动的onCreate()中,我在主线程上加载第一个WebView,在后台线程中加载其他WebView
我所期望的是在其他人仍在加载时立即看到WebView
。我发现第一个WebView
执行了loadData()
,最后完成。我通过设置webchromeclient
并检查onProgressChanged()
找到了这个问题。第一个WebView似乎总是最后加载
我假设WebView.loadData()函数是异步工作的,但我不知道为什么我加载的第一个函数总是最后一个完成,不是第二个、第三个、第四个或第一个,而是第五个,在我的例子中这是最后一个
有人知道为什么吗
下面是一些示例代码:
private class MyWebChromClient extends WebChromeClient{
private int webViewId;
public MyWebChromClient( int viewFlipperChildNum ){
webViewId = viewFlipperChildNum;
}
public void onProgressChanged(WebView view, int newProgress) {
if( newProgress == 100 ){
//load other WebViews now that the first one is finished!
}
};
设置我的Web视图
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...
好吧,在闲逛了一会儿之后,我真的不明白为什么第一个WebView最后才加载,但我确实为自己想出了一个解决方案。我所做的是加载了第一个单独显示的WebView。然后,在onProgressChanged(WebView视图,int newProgress)函数中,我在后台加载其余的WebView 示例代码:
private class MyWebChromClient extends WebChromeClient{
private int webViewId;
public MyWebChromClient( int viewFlipperChildNum ){
webViewId = viewFlipperChildNum;
}
public void onProgressChanged(WebView view, int newProgress) {
if( newProgress == 100 ){
//load other WebViews now that the first one is finished!
}
};
}