Android 多 WebViews 问题 : Not being able to load the first one until the rest have loaded

标签 android load webview

我有一个在 ViewFlipper 中存储 5 个 WebViews 的 Activity 。它一次只显示一个。在我的 Activity 的 onCreate() 中,我在主线程中加载第一个 WebView,在后台线程中加载其他 WebView。

我所期望的是在其他人仍在加载时立即看到 WebView。我发现第一个 WebView 我执行了一个 loadData() 最后完成。我通过设置 WebChromClient 并检查 onProgressChanged() 发现了这一点。第一个 WebView 似乎总是最后加载。

我假设 WebView.loadData() 函数异步工作,但我不知道为什么我加载的第一个总是最后完成,而不是第 2、3、4 或 1,而是第 5 个,这是我的最后一个案例。

有人知道为什么吗?

下面是一些示例代码:

设置我的 WebView

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 );

    };      
}

最佳答案

好吧,在四处寻找之后,我真的不明白为什么最后加载第一个 WebView,但我确实为自己想出了一个解决方案。我所做的是加载我们单独显示的第一个 WebView。然后,在 onProgressChanged(WebView view, 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!
    }

};      

关于Android 多 WebViews 问题 : Not being able to load the first one until the rest have loaded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5588269/

相关文章:

android - onCreateOptionsMenu() 在 Fragment 中调用了两次

android - 如何访问回收站 View 中的值?

javascript - 仅在加载图像/声音时执行功能,jQuery

javascript - 监控背景图片加载纯javascript

android - 通过 adb 从 PC 调试 Android WebView

android - 无法在仪表板 Activity 的 supportActionbar 上实现后退箭头

启动时的 Android C++ 服务

html - IE6无法加载页面

javascript - 从 Android WebView 获取 iframe 数据

webview - 如何在 WebviewScaffold 上覆盖 floatingActionButton