需要禁用通过Proteus膨胀的WebView
s上的缓存。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
s进行缩放。 最佳答案
您可以为webview注册自定义属性处理程序saydisableCache
并解决您的问题。
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
的实例注册自定义属性处理程序,它将开始工作。这样做的好处是,您可以根据自己的需求切换标志,避免对通过proteus膨胀的所有web视图禁用硬编码缓存。