2017-02-08 4 views
2

Необходимо отключить кеш на WebView с надутым до Proteus.Есть ли способ отключить кеширование в webview, завышенное через proteus

Есть ли какие-либо атрибуты на 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) 

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

+0

Вопрос неясен. Можете ли вы немного разобраться? Если вы хотите вызвать методы 'setCache', как вы упомянули через proteus, вы можете добавить обработчик настраиваемых атрибутов. – vader

+0

Я хочу делать операции над представлением, как только они отображаются через протукс, как мы делаем, когда xml раздувает представление в этом случае webview с помощью findviewbyid. в этом случае, что происходит, я загружаю ссылку на html-хранилище на нашем сервере в webview через proteus, но когда мы chnage html webview загружаем предыдущий html из-за кэширования, я хочу отключить это кеширование, но как это сделать, когда я не могу использовать findviewbyid –

ответ

2

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