最近、アプリを AndroidHTTPClient の使用から HttpURLConnection の使用に切り替えました。HttpURLConnection のキャッシュ機能を機能させようとしていますが、成功していません。
Httpリクエストを実行するための私のコードは次のとおりです
URL url = new URL(currentURL);
ResultAndUrl result = null;
final HttpURLConnection httpUrlConnection = (HttpURLConnection) urll.openConnection();
httpUrlConnection.setUseCaches(true);
try {
InputStream in = new BufferedInputStream(httpUrlConnection.getInputStream());
result = new ResultAndUrl();
result.result = convertStreamToString(in);
result.url = currentURL;
} catch (final Exception e) {
try {
Log.e("NETWORK", e.getMessage());
} catch (Exception ee) {
}
} finally {
try {
httpUrlConnection.disconnect();
} catch (Exception e) {
}
}
また、私のApplicationクラスには
public void enableHttpResponseCache() {
final long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
final File httpCacheDir = new File(getCacheDir(), "http");
try {
Class.forName("android.net.http.HttpResponseCache")
.getMethod("install", File.class, long.class)
.invoke(null, httpCacheDir, httpCacheSize);
} catch (Exception httpResponseCacheNotAvailable) {
try{
HttpResponseCache.install(httpCacheDir, httpCacheSize); // Library that implements HttpResponseCache for pre-ICS phones
} catch(Exception e){
}
}
}
ただし、ICS 電話の場合でも、キャッシュ ヒットは発生しておらず、キャッシュがまったく機能していないように見えます。私が何か間違ったことをしているのか、何かが欠けているのか教えてください。