2016-05-18 8 views
3

ich bin tring in webview seite von lokalen speicher zu zeigen, es sieht ok wenn seite geladen ersten mal, aber wenn ich webview entfernen und fügen es wieder es aussieht wie auf dem Bild (für 4.4+, auf früheren android-Versionen nur schwarzer Bildschirm):Android (4.4+) WebView zeigt nicht iframe page content zweite zeit laden

enter image description here

webview progrommatcaly jedes Mal das Hinzufügen (app Kontext verwendet wird), schalten sie Cache, Cookies, und entfernen sie sie in auf vernichten .

hier ist mein Code:

mLayout = (LinearLayout) view.findViewById(R.id.linear_main); 
    mWebView = new WebView(getActivity().getApplicationContext()); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.getSettings().setSaveFormData(false); 
    mWebView.setInitialScale(1); 
    mWebView.getSettings().setLoadWithOverviewMode(true); 
    mWebView.getSettings().setUseWideViewPort(true); 
    mWebView.getSettings().setAppCacheEnabled(false); 
    mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 
    mWebView.getSettings().setDatabaseEnabled(false); 
    mWebView.getSettings().setDomStorageEnabled(false); 
    mWebView.getSettings().setGeolocationEnabled(false); 
    mWebView.getSettings().setSaveFormData(false); 
    mWebView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 
      LayoutParams.MATCH_PARENT)); 
    mWebView.setWebChromeClient(new WebChromeClient()); 

    if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) { 
     mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true); 
    } 

    mWebView.getSettings().setPluginState(WebSettings.PluginState.ON); 
    mWebView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND); 

    mLayout.addView(mWebView,0); 


    /// then display page by call 
    public void display(String path){ 

    Map<String, String> noCacheHeaders = new HashMap<String, String>(2); 
     noCacheHeaders.put("Pragma", "no-cache"); 
     noCacheHeaders.put("Cache-Control", "no-cache"); 
    mWebView.loadUrl(path, noCacheHeaders); 

} 

    /// after display destroy fragment with the WebView 
@Override 
public void onDestroy() { 
    super.onDestroy(); 
    CookieSyncManager.createInstance(getActivity().getApplicationContext());   
    CookieManager cookieManager = CookieManager.getInstance();   
    cookieManager.removeAllCookie(); 
    mWebView.removeAllViews(); 
    mWebView.destroyDrawingCache(); 
    mWebView.clearDisappearingChildren(); 
    mWebView.clearFormData(); 
    mWebView.clearHistory(); 
    mWebView.clearCache(true);  
    mWebView.loadUrl("about:blank"); 
    mWebView.pauseTimers(); 

    mLayout.removeAllViews(); 

    mWebView.destroy(); 
    mWebView = null; 
    getActivity().getApplicationContext().deleteDatabase("webview.db"); 
    getActivity().getApplicationContext().deleteDatabase("webviewCache.db"); 
} 

könnten Sie bitte beraten, was sonst muss ich versuchen =)

+0

versuchen zu laden Videos? – Sush

+0

Nein, ein Frame ist Google-Karte, eine für die Webseite und 2 für Bilder – user5599807

+0

Wen es wieder hinzufügen, laden Sie es mit URL? – Sush

Antwort

4

sieht, dass

mWebView.pauseTimers(); 

speichern Daten in irgendeiner statischen variabel. .. so ist es egal, dass ich Webview zerstört habe und neue erstellt habe, das Abspielen von iframes wurde gestoppt. so habe ich diese Zeile entfernen und arbeiten jetzt

unter Verwendung dieses Flag

btw vorsichtig sein, denke, es zu Speicherverlust Fragen im Zusammenhang kann .. aber es ist eine andere Geschichte

Verwandte Themen