需要禁用通过Proteus膨胀的WebViews上的缓存。
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来扩展布局,我找不到这样的视图,因此解决方案无法针对多个WeViews进行缩放。

最佳答案

您可以为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为布局充气,然后在布局中将属性设置为truefalse
{
  "type": "WebView",
  "disableCache": "true"
}

您可以向Proteus的实例注册自定义属性处理程序,它将开始工作。这样做的好处是,您可以根据自己的需求切换标志,避免对通过proteus膨胀的所有web视图禁用硬编码缓存。

09-11 18:56