のドキュメントにHttpResponseCache
は次のセクションがあります。
以前のリリースでの作業
このクラスは Android 4.0 (Ice Cream Sandwich) で追加されました。リフレクションを使用して、以前のリリースに影響を与えずに応答キャッシュを有効にします。
try { File httpCacheDir = new File(context.getCacheDir(), "http"); long httpCacheSize = 10 * 1024 * 1024; // 10 MiB Class.forName("android.net.http.HttpResponseCache") .getMethod("install", File.class, long.class) .invoke(null, httpCacheDir, httpCacheSize); } catch (Exception httpResponseCacheNotAvailable) { }
この呼び出しは、SO の質問 (例:ここ) のリフレクションと Web の例で確認できます。また、この正確なスニペットを含むコードを引き継いで、キャッシュを設定しました (コメントを含むため、おそらく単なるコピーパスタです)。ただし、ここでリフレクションを使用する必要がある理由がよくわかりません。
通常、自分の defined より上の特定の API レベルで追加されたメソッドを使用するminSdkVersion
場合は、次のパターンを使用します。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// do something here
}
では、なぜこれが のデフォルト パターンではないのでしょうかHttpResponseCache
。リフレクションを使用する利点は何ですか? それは確かに私のコードの可読性には追加されません。HttpResponseCache
この方法でリフレクションを使用すると、実際に ICS の下で機能しますか?
編集:ここには古い Android デバイスがなく、エミュレーターがまったく起動しないため、現時点では単純にテストすることはできません。たぶん、反射なしでひどくクラッシュするだけです。