我尝试使用HttpResponseCache来启用响应缓存(用于Web请求)。在我的应用程序中,我通过UrlConnection和Loader执行请求,然后我将InputStream结果发送到Activity以显示图像或使用JsonObject。在我的情况下,HttpResponseCache使用图像的网址,并且可以在离线时显示图像但是使用Json的Url,输入流结果只能在线工作,在离线时无法显示数据。
装载机类:
public InputStream loadInBackground() {
InputStream streamResult = null;
HttpURLConnection conn = null;
URL url = new URL(urlConnection);
conn = (HttpURLConnection) url.openConnection();
conn.setUseCaches(true);
final InputStream finalStream = conn.getInputStream();
streamResult = finalStream;
((Activity) context).runOnUiThread(new Runnable() {
@Override
public void run() {
ShowData(finalStream);
}
});
return streamResult;
}
的活动:
@Override
public void ShowData(InputStream output) {
if (output != null) {
if (rbtImage.isChecked()) {
bitmap = BitmapFactory.decodeStream(output);
} else if (rbtJson.isChecked()) {
try {
result = convertStreamToString(output);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
在Loader执行后,我可以通过Image的Url显示带有该位图的Image。但离线时无法使用Json的Url显示数据。
我尝试使用:addRequestProperty(" Cache-Control"," only-if-cached"); " max-stale"," max-age"," max-age = 600,private,must-revalidate"。但没什么用。
请帮助我了解如何在Json中使用HttpResponseCache?