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