HttpResponseCache Klasse

Definition

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

[Android.Runtime.Register("android/net/http/HttpResponseCache", DoNotGenerateAcw=true)]
public sealed class HttpResponseCache : Java.Net.ResponseCache, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ICloseable
[<Android.Runtime.Register("android/net/http/HttpResponseCache", DoNotGenerateAcw=true)>]
type HttpResponseCache = class
    inherit ResponseCache
    interface ICloseable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Vererbung
HttpResponseCache
Attribute
Implementiert

Hinweise

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können. Diese Klasse unterstützt java.net.HttpURLConnection und javax.net.ssl.HttpsURLConnection; es gibt keinen plattformbasierten Cache für DefaultHttpClient oder AndroidHttpClient. Installation und Instanzen sind threadsicher.

<h3>Installieren eines HTTP-Antwortcaches</h3> Aktivieren Sie das Zwischenspeichern aller HTTP-Anforderungen Ihrer Anwendung, indem Sie den Cache beim Starten der Anwendung installieren. Dieser Code installiert beispielsweise einen 10 MiB-Cache im android.content.Context#getCacheDir() application-specific cache directory Dateisystem}:

{@code
              protected void onCreate(Bundle savedInstanceState) {
                  ...

                  try {
                      File httpCacheDir = new File(context.getCacheDir(), "http");
                      long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
                      HttpResponseCache.install(httpCacheDir, httpCacheSize);
                  } catch (IOException e) {
                      Log.i(TAG, "HTTP response cache installation failed:" + e);
                  }
              }

              protected void onStop() {
                  ...

                  HttpResponseCache cache = HttpResponseCache.getInstalled();
                  if (cache != null) {
                      cache.flush();
                  }
              }}

Dieser Cache entfernt Einträge nach Bedarf, um die Größe von 10 MiB zu überschreiten. Die beste Cachegröße ist anwendungsspezifisch und hängt von der Größe und Häufigkeit der heruntergeladenen Dateien ab. Eine Erhöhung des Grenzwerts kann die Trefferrate verbessern, aber es kann auch nur Speicherplatz für Dateisysteme verschwenden!

Für einige Anwendungen ist es möglicherweise vorzuziehen, den Cache im externen Speicherverzeichnis zu erstellen. <strong>Es gibt keine Zugriffssteuerungen für das externe Speicherverzeichnis, sodass sie nicht für Caches verwendet werden sollte, die private Daten enthalten können.</strong> Obwohl es oft mehr freien Speicherplatz hat, ist externer Speicher optional und— auch wenn verfügbar— kann während der Verwendung ausgeblendet werden. Rufen Sie das externe Cacheverzeichnis mithilfe von android.content.Context#getExternalCacheDir(). Wenn diese Methode NULL zurückgibt, sollte Die Anwendung entweder nicht zwischenspeichern oder zwischenspeichern auf nicht externen Speicher zurückgreifen. Wenn der externe Speicher während der Verwendung entfernt wird, wird die Cachetreffrate auf Null abgenommen, und laufende Cachelesevorgänge schlagen fehl.

Durch das Leeren des Caches werden die Daten in das Dateisystem erzwungen. Dadurch wird sichergestellt, dass alle antworten, die in den Cache geschrieben wurden, beim nächsten Start der Aktivität lesbar sind.

<h3>Cacheoptimierung</h3> Zur Messung der Cacheeffizienz verfolgt diese Klasse drei Statistiken nach: <ul<>li><strong#getRequestCount() Request Count:></strong> die Anzahl der seit der Erstellung dieses Caches ausgegebenen HTTP-Anforderungen. <li><strong>#getNetworkCount() Network Count:</strong> die Anzahl dieser Anforderungen, die eine Netzwerknutzung erfordern. <li><strong>#getHitCount() Hit Count:</strong> die Anzahl der Anforderungen, deren Antworten vom Cache bereitgestellt wurden. </ul> Manchmal führt eine Anforderung zu einem bedingten Cachetreffer. Wenn der Cache eine veraltete Kopie der Antwort enthält, gibt der Client eine bedingte GETAusgabe aus. Der Server sendet dann entweder die aktualisierte Antwort, wenn sie geändert wurde, oder eine kurze Antwort ohne Änderung, wenn die Kopie des Clients noch gültig ist. Solche Antworten erhöhen sowohl die Netzwerkanzahl als auch die Trefferanzahl.

Die beste Möglichkeit zur Verbesserung der Cachetreffrate besteht darin, den Webserver so zu konfigurieren, dass zwischengespeicherte Antworten zurückgegeben werden. Obwohl dieser Client alle HTTP/1.1 (RFC 2068) -Cacheheader berücksichtigt, werden keine Teilantworten zwischengespeichert.

<h3>Erzwingen einer Netzwerkantwort</h3> In einigen Situationen, z. B. wenn ein Benutzer auf eine Schaltfläche "Aktualisieren" klickt, kann es erforderlich sein, den Cache zu überspringen und Daten direkt vom Server abzurufen. Um eine vollständige Aktualisierung zu erzwingen, fügen Sie die no-cache Direktive hinzu:

{@code
                    connection.addRequestProperty("Cache-Control", "no-cache");
            }

Wenn nur erzwungen werden muss, dass eine zwischengespeicherte Antwort vom Server überprüft wird, verwenden Sie stattdessen die effizientere max-age=0 Vorgehensweise:

{@code
                    connection.addRequestProperty("Cache-Control", "max-age=0");
            }

<h3>Erzwingen sie eine Cacheantwort</h3> Manchmal möchten Sie Ressourcen anzeigen, wenn sie sofort verfügbar sind, andernfalls aber nicht. Dies kann verwendet werden, damit Ihre Anwendung etwas anzeigen kann, während Sie warten, bis die neuesten Daten heruntergeladen werden. Um eine Anforderung auf lokal zwischengespeicherte Ressourcen einzuschränken, fügen Sie die only-if-cached Direktive hinzu:

{@code
                try {
                    connection.addRequestProperty("Cache-Control", "only-if-cached");
                    InputStream cached = connection.getInputStream();
                    // the resource was cached! show it
                } catch (FileNotFoundException e) {
                    // the resource was not cached
                }
            }

Diese Technik funktioniert noch besser in Situationen, in denen eine veraltete Antwort besser ist als keine Antwort. Um veraltete zwischengespeicherte Antworten zuzulassen, verwenden Sie die max-stale Direktive mit der maximalen Veraltetkeit in Sekunden:

{@code
                    int maxStale = 60 * 60 * 24 * 28; // tolerate 4-weeks stale
                    connection.addRequestProperty("Cache-Control", "max-stale=" + maxStale);
            }

<h3>Arbeiten mit früheren Versionen</h3> Diese Klasse wurde in Android 4.0 (Ice Cream Sandwich) hinzugefügt. Verwenden Sie Spiegelung, um den Antwortcache zu aktivieren, ohne dass sich dies auf frühere Versionen auswirkt:

{@code
                  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) {
                  }}

Java-Dokumentation für android.net.http.HttpResponseCache.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Eigenschaften

Class

Gibt die Laufzeitklasse dieses Werts Objectzurück.

(Geerbt von Object)
Handle

Das Handle für die zugrunde liegende Android-Instanz.

(Geerbt von Object)
HitCount

Gibt die Anzahl der HTTP-Anforderungen zurück, deren Antwort vom Cache bereitgestellt wurde.

Installed

Gibt den aktuell installierten HttpResponseCacheOder NULL-Wert zurück, wenn kein Cache installiert ist oder kein Cache vorhanden ist HttpResponseCache.

JniIdentityHashCode

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

(Geerbt von Object)
JniPeerMembers

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

NetworkCount

Gibt die Anzahl der HTTP-Anforderungen zurück, für die das Netzwerk entweder eine Antwort bereitstellen oder eine lokal zwischengespeicherte Antwort überprüfen muss.

PeerReference

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

(Geerbt von Object)
RequestCount

Gibt die Gesamtanzahl der HTTP-Anforderungen zurück, die vorgenommen wurden.

ThresholdClass

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

(Geerbt von ResponseCache)
ThresholdType

Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen.

(Geerbt von ResponseCache)

Methoden

Clone()

Erstellt und gibt eine Kopie dieses Objekts zurück.

(Geerbt von Object)
Close()

Deinstalliert den Cache und gibt alle aktiven Ressourcen frei.

Delete()

Deinstalliert den Cache und löscht alle gespeicherten Inhalte.

Dispose()

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

(Geerbt von Object)
Dispose(Boolean)

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

(Geerbt von Object)
Equals(Object)

Gibt an, ob ein anderes Objekt "gleich" diesem Objekt ist.

(Geerbt von Object)
Flush()

Erzwingen von gepufferten Vorgängen an das Dateisystem.

Get(URI, String, IDictionary<String,IList<String>>)

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

GetHashCode()

Gibt einen Hashcodewert für das Objekt zurück.

(Geerbt von Object)
Install(File, Int64)

Erstellt einen neuen HTTP-Antwortcache und legt ihn als Standardcache des Systems fest.

JavaFinalize()

Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection bestimmt, dass keine weiteren Verweise auf das Objekt vorhanden sind.

(Geerbt von Object)
MaxSize()

Gibt die maximale Anzahl von Bytes zurück, die dieser Cache zum Speichern seiner Daten verwenden soll.

Notify()

Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet.

(Geerbt von Object)
NotifyAll()

Aktiviert alle Threads, die auf dem Monitor dieses Objekts warten.

(Geerbt von Object)
Put(URI, URLConnection)

Ermöglicht dem Protokollhandler das Zwischenspeichern von Daten nach dem Abrufen von Ressourcen.

SetHandle(IntPtr, JniHandleOwnership)

Legt die Handle-Eigenschaft fest.

(Geerbt von Object)
Size()

Gibt die Anzahl der Bytes zurück, die derzeit zum Speichern der Werte in diesem Cache verwendet werden.

ToArray<T>()

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolgendarstellung des Objekts zurück.

(Geerbt von Object)
UnregisterFromRuntime()

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

(Geerbt von Object)
Wait()

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch em benachrichtigt/em> oder <em>unterbrochen</em>.<><

(Geerbt von Object)
Wait(Int64)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)
Wait(Int64, Int32)

Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

IJavaPeerable.Disposed()

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

(Geerbt von Object)
IJavaPeerable.DisposeUnlessReferenced()

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

(Geerbt von Object)
IJavaPeerable.Finalized()

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

(Geerbt von Object)
IJavaPeerable.JniManagedPeerState

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

(Geerbt von Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

(Geerbt von Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

(Geerbt von Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

(Geerbt von Object)

Erweiterungsmethoden

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

GetJniTypeName(IJavaPeerable)

Speichert HTTP- und HTTPS-Antworten auf das Dateisystem zwischen, sodass sie möglicherweise wiederverwendet und Zeit und Bandbreite sparen können.

Gilt für: