2017-02-08 4 views
2

WebViewのキャッシュを無効にする必要があります。Proteusで膨らませます。プロテクトを通して膨らまされたwebviewでキャッシングを無効にする方法はありません

WebViewには無効にする属性がありますか?

我々は、それがfindViewById(R.id.something)を使用してプリコンパイルされたXMLレイアウトを使用して膨張させた場合は通常と同じビューを見つけて、その上に次のメソッドを呼び出すことができます。

WebView wv = parent.findViewById(R.id.webview); 
WebSettings ws = wv.getSettings(); 

ws.setAppCacheEnabled(false); 
ws.setCacheMode(WebSettings.LOAD_NO_CACHE) 

しかしproteus以来、私はこのようなビューを見つけることができないとソリューションは、複数のWeView秒のスケールではないでしょうサーバからJSONを使用してレイアウトを膨張させます。

+0

質問は不明です。あなたは少し詳しく説明できますか?あなたがプロテウスを介して言及したように 'setCache'メソッドを呼び出す場合は、カスタム属性ハンドラを追加することができます。 – vader

+0

findviewbyidを使用してこのケースのwebviewでxmlがビューを膨張させたときのように、私たちはプロテウスを通してレンダリングされた後で操作を行いたいと思います。この場合、何が起こっている私はプロテクトを介してwebviewで私たちのサーバー上のhtmlストアのリンクをロードしていますが、私たちはchnage html webview load前のhtmlをキャッシングするためにキャッシングを無効にしたいのですが、 –

答えて

2

WebViewにカスタムアトリビュートハンドラ(disableCache)を登録して問題を解決できます。

ProteusBuilder builder; 
builder.register("WebView, "disableCache", new BooleanAttributeProcessor<WebView>() { 
    @Override 
    public void setBoolean(WebView view, boolean value) { 
     WebSettings ws = view.getSettings(); 
     if (value) { 
      ws.setAppCacheEnabled(value); 
      ws.setCacheMode(WebSettings.LOAD_NO_CACHE); 
     } 
    } 
}); 
Proteus proteus = builder.build(); 
ProteusContext context = proteus.createContextBuilder(context).build(); 

layoutInflater = context.getInflater(); 

使用layoutInflater

はあなたのレイアウトを膨らませると、あなたのレイアウトで trueかなど falseしてくださいに属性を設定します。

{ 
    "type": "WebView", 
    "disableCache": "true" 
} 

カスタム属性ハンドラをインスタンスProteusに登録すると、作業が開始されます。利点は、要件に基づいてフラグを切り替えることができ、プロテウスを介して膨らまされたすべてのWebビューでハードコーディングキャッシュが無効にならないようにすることです。

関連する問題