2016-05-18 14 views
3

ローカルストレージからWebviewページに表示されていますが、ページが初めて読み込まれたときに表示されますが、webviewを削除して、 (以前のアンドロイドのバージョンで4.4以降では、単に黒画面)の画像上のように:Android(4.4+)WebViewでiframeページのコンテンツが2回目に表示されない

enter image description here

(アプリケーション・コンテキストを使用して)progrommatcalyたびに追加のWebView、キャッシュをオフに、クッキー、および破壊にそれを取り除きます。ここ

私のコードです:

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

あなたは私が=しようとする必要がある他に何アドバイスをしてください可能性があり)

+0

をロードしようとしているのですので、私はこの行を削除したのだが、今

作業ビデオ? – Sush

+0

いいえ、1つのフレームはGoogleマップ、1つはウェブページ、もう1つは画像用 – user5599807

+0

wenもう一度URLを追加していますか? – Sush

答えて

4

は、いくつかの静的変数にデータを保存することを

mWebView.pauseTimers(); 

見えます。 ..それで、私はwebviewを破壊し、新しいものを作成して、iframeを止めて遊んでいても問題ありません。 、ところでこのフラグ

を使用して、注意してくださいそれはメモリリークの問題に関連することができますね..しかし、それはまた別の話

関連する問題