Есть ли способ отключить кеширование в webview, раздутое через протеус

Нужно отключить кеш на WebViewраздувается через протей.

Есть ли какие-либо атрибуты на WebView что можно использовать для его отключения?

Мы могли бы найти представление, как если бы оно было раздуто, используя предварительно скомпилированные макеты XML, используя findViewById(R.id.something) и вызовите следующие методы для этого.

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

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

Но так как протей раздувает макеты с помощью JSON с сервера я не могу найти представление, как это, и решение не будет масштабироваться для нескольких WeViews.

1 ответ

Решение

Вы можете зарегистрировать пользовательский атрибут обработчик скажем disableCache для WebView и решить вашу проблему.

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 и это начнет работать. Преимущество заключается в том, что вы можете переключать флаг в соответствии с вашими требованиями и избегать жесткого кэширования кодирования, отключенного для всех веб-представлений, распространяемых через протей.

Другие вопросы по тегам