有什么方法可以禁用通过变形杆菌膨胀的webview中的缓存
Is there any way disable caching in webview inflated through proteus
需要在 WebView
上禁用通过 Proteus 膨胀的缓存。
Are there any attributes on the WebView
which can be used to disable it?
如果使用预编译的 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)
But since proteus inflates layouts using JSON
from the server I cannot find the view like this and the solution would not scale for multiple WeView
s.
您可以为 WebView 注册自定义属性处理程序 disableCache
并解决您的问题。
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 视图禁用硬编码缓存。
需要在 WebView
上禁用通过 Proteus 膨胀的缓存。
Are there any attributes on the
WebView
which can be used to disable it?
如果使用预编译的 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)
But since proteus inflates layouts using
JSON
from the server I cannot find the view like this and the solution would not scale for multipleWeView
s.
您可以为 WebView 注册自定义属性处理程序 disableCache
并解决您的问题。
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 视图禁用硬编码缓存。