我正在尝试使用 HttpResponseCache 来启用响应缓存(用于 Web 请求)。在我的应用程序中,我使用 Loader 通过 UrlConnection 执行请求,然后将 InputStream 结果发送到 Activity 以显示图像或使用 JsonObject。在我的情况下,HttpResponseCache 使用图像的 url 并且可以在离线时显示图像但是使用 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、私有、必须重新验证”。但没有任何工作。
请帮助我了解如何将 HttpResponseCache 与 Json 一起使用?