HttpResponseCache を使用して、応答キャッシュ (Web 要求用) を有効にしようとしています。私のアプリケーションでは、ローダーを使用して UrlConnection でリクエストを実行し、InputStream の結果をアクティビティに送信して、画像を表示したり、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();
}
}
}
}
ローダーによって実行された後、イメージの URL によってそのビットマップでイメージを表示できます。ただし、オフラインの場合、Json の URL でデータを表示することはできません。
私は with:addRequestProperty("Cache-Control", "only-if-cached"); を使用しようとしています。「max-stale」、「max-age」、「max-age=600、非公開、再検証が必要」。しかし、何も機能しません。
JsonでHttpResponseCacheを使用する方法を教えてください。