P1r*_*nh4 2 android caching webview
我有一个WebView只显示外部SD卡的图像.这很有效,但是如果图像被新数据覆盖,WebView则不会更新图像.
这更令人好奇,因为它在活动方法中WebView创造了全新onCreate的东西.这是我的代码:
@Override
public void onCreate(Bundle savedInstanceState)
{
Log.d(TAG, "Creating Viewer");
super.onCreate(savedInstanceState);
Intent intent = getIntent();
Bundle extras = intent.getExtras();
String imagePath = extras.getString("imgFile");
shareImage(Uri.fromFile(new File(imagePath)));
setContentView(R.layout.viewer_test);
WebView viewer = (WebView) findViewById(R.id.imageViewer);
viewer.getSettings().setAllowFileAccess(true);
viewer.getSettings().setBuiltInZoomControls(false);
viewer.getSettings().setLoadWithOverviewMode(true);
viewer.getSettings().setUseWideViewPort(true);
viewer.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
String filename = "file://"+ imagePath;
String html = "<html><head></head><body bgcolor=\"#000000\"><center><img src=\""+ filename + "\"></center></body></html>";
viewer.loadDataWithBaseURL(null, html, "text/html","utf-8", null);
viewer.reload();
}
Run Code Online (Sandbox Code Playgroud)
在将路径imagePath发送到此激活之前,保存的路径中的图像将被另一个活动覆盖.该WebView但是仍然显示旧的图像数据.
正如你所看到的,我已经尝试设置缓存模式,我试图手动重新加载WebView,不幸的是没有运气.
我还检查了文件管理器,SD卡上的图像被新数据覆盖.我试图多次覆盖该文件,但这也不起作用.不知何故,图像数据被缓存到某处或某处.如何避免这种情况并每次加载新数据?
(显然创建一个具有不同文件名的新文件可以正常工作,但我想替换旧文件.)
我对Webview不太熟悉.但在普通网站中,您可以使用查询字符串来模拟唯一的地址,同时仍然加载相同的图像.这通常用在css文件的网页上.
例如:http://www.webpage.com/image.jpg? cachekey = 23456456754通过在每次加载图像时随机化缓存键,它被视为唯一图像并且不从缓存加载.
在文件名字符串的末尾放置一个随机的int或字符串
Random r = new Random();
int randInt = r.nextInt(8000000-1000000) + 1000000;
String query = "?cachekey=" + randInt ;
String html = "<html><head></head><body bgcolor=\"#000000\"><center><img src=\""+ filename + query "\"></center></body></html>";
Run Code Online (Sandbox Code Playgroud)
我还没有测试过这个.但它是一个如何解决它的想法.
| 归档时间: |
|
| 查看次数: |
1526 次 |
| 最近记录: |